2015-11-29 98 views
3

我有一個片段的活動。在這個片段裏面有一個viewpager,裏面有一個列表。現在,一旦用戶點擊列表中的一個項目,該片段應該被替換爲另一個片段,我需要傳遞一些數據,如列表位置和其他一些與之相關的值。我可以通過使用接口來實現這一點,但是因爲我們正在使用rxjava,所以想使用rx來實現它...現在不想實現事件總線或rxbus模式。那麼如何使用rxjava實現它?使用rxjava進行分段間通信

回答

6

一種方式做到這一點:

/* inside whatever you mean by the list */ 
PublishSubject<Void> mClickSubject = PublishSubject.create(); //or use another type instead of Void if you need 

/*...*/ 
    item.setOnClickListener(v -> mClickSubject.onNext(null)); 
/*...*/ 

public Observable<Void> itemClicked() { 
    return mClickSubject; 
} 

/* pass your subject/observable all the way to the activity */ 

/* inside the activity */ 

private void setupSubscription() { 
    mCurrentFragment.listItemClicked() 
      .subscibe(/* switch fragment */); 
} 

或者另一種方式是有一個單/靜態類控股成員PublishSubject,並通過它推項目。這樣做,你不需要所有的getters將列表中的observable傳遞給activity。

+1

你可以用例子解釋第二個單例方法嗎? – shivamDev

+1

@shivamDev我想你正在尋找這樣的東西:https://stackoverflow.com/a/40836109/1101730 – Micer