簡體   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