我目前正在使用 MVP 模式开发 Android 应用程序。
当我尝试开发 Activity 时,我应该使用 ListView。所以我对 ListView 使用适配器。但我听说 Adapter 与 MVP 模式上的 Presenter 类似。
我认为如果 Adapter 与 Presenter 类似,那么我应该使用 Presenter 来更新 ListView 而不是 Adapter。
当出现这种情况时,如何开发ListView呢?只使用Adapter并继续使用MVP模式?
感谢您的阅读。
适配器是视图的一部分。事实上,所有 Android 依赖项都应该是视图的一部分。
让适配器与您的模型和演示者隔离是一项艰巨的任务。为此,我发布了一个名为 PaperKnife 的库。 http://albertovecina.github.io/PaperKnife/
您可以使用 PaperKnife 将适配器与模型和演示器层解耦。请按照以下步骤操作:
使用抽象模型层CellElement
界面。您的视图层不需要知道您的模型。
-
创建一个类来提供行视图的信息。您可以使用演示者。实现类CellDataProvider
并创建方法来提供所有信息。使用注释您的提供者方法@DataSource("DataId")
来执行映射。您的数据方法接收模型类的实例。例如:
public class SamplePresenterImpl implements SamplePresenter, CellDataProvider {
@DataSource("Title")
public String getTitle(Item item) {
return item.getTitle();
}
// etc.
}
-
创建一个ViewHolder
在你的适配器中并实现CellViewHolder
界面。创建方法来管理视图和使用DataTarget("DataId")
static class ViewHolder extends CellViewHolder {
@DataTarget("Title")
public String setTitle(String title) {
mTextViewTitle.setText(title);
}
}
-
在适配器中执行映射getView
method:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// etc.
PaperKnife.map(mList.get(position))
.dataProvider(mCellDataProvider)
.into(viewHolder);
return convertView;
}
这样你的视图层就知道了CellElement
接口,并且您的演示者负责向您的适配器提供数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)