gpt4 book ai didi

android - 如何使用适用于 Android 的 MVP 模式控制 ListView

转载 作者:IT老高 更新时间:2023-10-28 23:24:32 25 4
gpt4 key购买 nike

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

当我尝试开发一个 Activity 时,我应该使用 ListView。所以我将适配器用于 ListView。但我听说 Adapter 类似于 Presenter on MVP Pattern。

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

遇到这种情况,如何开发ListView?只使用适配器并继续使用 MVP 模式?

感谢您的阅读。

最佳答案

适配器是 View 的一部分。事实上,所有的 Android 依赖都应该是 View 的一部分。将适配器与您的模型和演示者隔离开来是一项艰巨的任务。 I have released a library called PaperKnife for this purpose.

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

  1. 使用CellElement接口(interface)抽象模型层。您的 View 层不需要知道您的模型。

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

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

    static class ViewHolder extends CellViewHolder {
    @DataTarget("Title")
    public String setTitle(String title) {
    mTextViewTitle.setText(title);
    }
    }
  4. 在你的适配器getView方法中执行映射:

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    // etc.
    PaperKnife.map(mList.get(position))
    .dataProvider(mCellDataProvider)
    .into(viewHolder);
    return convertView;
    }

这样你的 View 层只知道CellElement接口(interface),你的presenter负责向你的适配器提供数据。

关于android - 如何使用适用于 Android 的 MVP 模式控制 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24858050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com