Android mvp模式中,adapter应该放在什么位置?

发布于 2022-09-04 17:39:58 字数 282 浏览 22 评论 0

比如说 某个activity中有个listview或者viewpager,那它需要的adapter应该放在activity中还是放在presenter内呢?

我理解的MVP view不应该和model有交互,也就是说adapter和从model获取的数据(List<Bean>或者List<Fragment>之类的) 都应该放到presenter里,由presenter的方法(比如 getViewpagerAdapter之类的)提供。这样理解的话正确吗 求解释。。。

如果有对应的代码就更好了

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

独守阴晴ぅ圆缺 2022-09-11 17:39:59

理解没错,?

Adapter <- ListView <- Activity <-> Presenter <-> Model

View:

public void updateAdapterData(Data data) {
  Adapter.updateData(data);
}

Model:

public Data getAdapterData();

Presenter:

View.updateAdapterData(Model.getAdapterData());

参考:
android-architecture
MVC,MVP 和 MVVM 的图示

暮年慕年 2022-09-11 17:39:59

你这样的理解是可以的。
建议是可以看一些采用MVP框架的项目来加深自己的理解,推荐两个项目:
LookLook
StylishMusicPlayer

还有一种MVP架构是使用Activity和Fragment作为Presenter层的,可以见:
TheMVP

百善笑为先 2022-09-11 17:39:59

public interface  INewsContract {

    interface Model {
        //to presenter
        void newsRequestService() throws Exception;
    }

    interface View {
        //to presenter
        void showNews(List<BeanNews> newsList);
        
        void showRefresh();
        void hideRefresh();
    }

    interface class Presenter {
        //to view
        public abstract void newsRequest();
        //to model
        public abstract void newsResultSuccess(List<BeanNews> newsList);
        public abstract void newsRequestFailure();
    }
}

您好,以上是我的协议解决方案,
以下我的解决方案的具体解析,希望对您有帮助。。

0.首先View端初始化一个带有空List数据的Adapter.

1.View端开启刷新showRefresh()去调用Presenter的newsRequest()函数;

2.Presenter负责调度把消息传给Model调用其newsRequestService()函数负责具体实施;

3.Model端开启异步线程去处理网络请求得到List<BeanNews>数据,将成功获取得到的结果回传给Presenter端的newsResultSuccess(List<BeanNews> newsList)函数.

4.Presenter端调用View端提供的showNews(List<BeanNews> newsList)函数把Model回传的List<BeanNews>数据进行转发,最后数据将在View端调用Adapter.setNewData(List)进行展示.

附拿到数据后再View端UI展示的代码(UI写在了fragment中):

getActivity().runOnUiThread( ()-> {
            if (mNewsAdapter != null) {
                mNewsAdapter.setNewData(mNewsList);
            }
        });
秋意浓 2022-09-11 17:39:59

http://blog.csdn.net/github_3... 这个里面有介绍

纵情客 2022-09-11 17:39:59

建议业务分包,都放一起就好了,还便于维护复制按层分包太坑了,会感觉自己变成搬砖的,以上内容基于MVP架构

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文