Android 中如何使用 MVP 模式控制 ListView

2024-03-29

我目前正在使用 MVP 模式开发 Android 应用程序。

当我尝试开发 Activity 时,我应该使用 ListView。所以我对 ListView 使用适配器。但我听说 Adapter 与 MVP 模式上的 Presenter 类似。

我认为如果 Adapter 与 Presenter 类似,那么我应该使用 Presenter 来更新 ListView 而不是 Adapter。

当出现这种情况时,如何开发ListView呢?只使用Adapter并继续使用MVP模式?

感谢您的阅读。


适配器是视图的一部分。事实上,所有 Android 依赖项都应该是视图的一部分。 让适配器与您的模型和演示者隔离是一项艰巨的任务。为此,我发布了一个名为 PaperKnife 的库。 http://albertovecina.github.io/PaperKnife/

您可以使用 PaperKnife 将适配器与模型和演示器层解耦。请按照以下步骤操作:

  1. 使用抽象模型层CellElement界面。您的视图层不需要知道您的模型。

  2. 创建一个类来提供行视图的信息。您可以使用演示者。实现类CellDataProvider并创建方法来提供所有信息。使用注释您的提供者方法@DataSource("DataId")来执行映射。您的数据方法接收模型类的实例。例如:

    public class SamplePresenterImpl implements SamplePresenter, CellDataProvider {
        @DataSource("Title")
        public String getTitle(Item item) {
            return item.getTitle();
        }
        // etc.
    }
    
  3. 创建一个ViewHolder在你的适配器中并实现CellViewHolder界面。创建方法来管理视图和使用DataTarget("DataId")

    static class ViewHolder extends CellViewHolder {
        @DataTarget("Title")
        public String setTitle(String title) {
            mTextViewTitle.setText(title);
        }
    }
    
  4. 在适配器中执行映射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(使用前将#替换为@)

Android 中如何使用 MVP 模式控制 ListView 的相关文章

随机推荐