繁体   English   中英

是有效的Mvp模式实施(带有rxandroid和改造)

[英]is valid Mvp pattern implementation (with rxandroid and retrofit)

我想使用mvp存储库中的rxandroid从远程服务器获取数据。 然后,使用数据(在“片段”中)设置网格适配器,并为平板电脑ui(在“活动”中)替换另一个片段。

如果我使用回调侦听器,则至少需要2个回调,以通知async(rxjava)完成以数据集中的第一条记录为片段并启动片段。

除了回调之外,还有其他解决此问题的方法吗?

实际上,我什至不确定我是否正确使用了rxjava。

现在,我将observable传递回片段,以便设置适配器并从返回的数据中启动新片段。

 public <T> Observable.Transformer<T, T> applySchedulers() {
    return observable -> observable
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread());
}

@Override
public Observable<MovieDataContainer> getMovieByFilter(String sortBy, String apiKey, int number) {
    MovieApiService movieApiService= retrofit.createService(MovieApiService.class);
    return movieApiService
            .getMovieList(sortBy,apiKey,number)
            .compose(applySchedulers());
}

如果我没有采取正确的方法,请告诉我。 如果您有这种情况的样本,将不胜感激

万一这是我的git仓库

我将创建以下组件:

  • ItemsViewItemsPresenter用于显示项目列表。
  • DetailsViewDetailsPresenter用于显示项目详细信息。
  • NavigationHelper用于管理导航(例如,打开新片段)

流将如下所示:

  1. ItemsPresenter.loadData()使用rxJava和改造来加载数据。
  2. ItemsPresenter调用ItemsView.showItems(List<Items> list) (在内部,您将看到类似( adapter.setContent(list) )的内容。
  3. ItemsPresenter调用NavigationHelper.showDetails(Item selectedItem) NavigationHelper行为应取决于手机/平板电脑。

ItemsPresenter在手机和平​​板电脑上的行为可能有所不同。 对于电话,仅当用户从列表中选择项目时,它才调用NavigationHelper.showDetails 对于表,在加载数据时,它还会为第一项调用NavigationHelper.showDetails 我建议通过演示者的构造函数传递有关电话/桌子的知识。

有关ItemsPresenter > ItemsView流的示例,请参阅PresenterView实现

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM