[英]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仓库
我将创建以下组件:
ItemsView
和ItemsPresenter
用于显示项目列表。 DetailsView
和DetailsPresenter
用于显示项目详细信息。 NavigationHelper
用于管理导航(例如,打开新片段) 流将如下所示:
ItemsPresenter.loadData()
使用rxJava和改造来加载数据。 ItemsPresenter
调用ItemsView.showItems(List<Items> list)
(在内部,您将看到类似( adapter.setContent(list)
)的内容。 ItemsPresenter
调用NavigationHelper.showDetails(Item selectedItem)
。 NavigationHelper
行为应取决于手机/平板电脑。 ItemsPresenter
在手机和平板电脑上的行为可能有所不同。 对于电话,仅当用户从列表中选择项目时,它才调用NavigationHelper.showDetails
。 对于表,在加载数据时,它还会为第一项调用NavigationHelper.showDetails
。 我建议通过演示者的构造函数传递有关电话/桌子的知识。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.