私は4つの断片を持つビューページを持つアプリを持っています。私はすべてのフラグメントに私のサーバーからのデータを入力したい。私はアクティビティでデータを読み込み、それをすべてのフラグメントに配布したいと思います。Reform to call
だから私は、このシグネチャがあります。
@GET("trashCan")
fun getTrashCans() : Observable<List<TrashCanDto>>
をそして私は、メソッドを呼び出して、リストを読み込みます。
ServiceGenerator.createService(ApiClient::class.java)
.getTrashCans()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : Subscriber<List<TrashCan>>(){
override fun onCompleted() {
showProgress(false)
}
override fun onError(e: Throwable) {
showProgress(false)
Toast.makeText([email protected], "Erro ao carregar informações",
Toast.LENGTH_SHORT).show()
e.printStackTrace()
}
override fun onNext(trashCanList: List<TrashCan>) {
mTrashCanList = trashCanList
}
})
そして私は、このリストから観測を取得する方法があります:
override fun getObservable(): Observable<TrashCan> {
return BehaviorSubject.from(mTrashCanList)
}
をそして、私は私の断片で、その後取得:
fun newInstance(sectionNumber: Int, hasObservable: HasObservable<TrashCan>) : TrashCansInfoFragment {
val fragment = TrashCansInfoFragment()
fragment.setObservable(hasObservable.getObservable())
val args = Bundle()
args.putInt(ARG_SECTION_NUMBER, sectionNumber)
fragment.arguments = args
return fragment
}
うーん...これは動作するはずですしかし、それはしません。私の断片の最初の部分は空になり、一方の断片にはデータがあることが起こります。 (2番目と3番目はデータを持っていないはずです...)
だから私はそう思います:フラグメントが作成されると、リストはまだ空ですので、アクティビティのObservableは何も提供しません...しかし、ビューページャーが4番目のフラグメントになったとき、Listはもうnullではないので、私の画面にデータが表示されます。
私の問題は次のとおりです。アクティビティでオブザーバブルを作成して、データをフラグメントに保存し続けるにはどうすればよいですか? Observableがサブスクリプションのときにデータをプッシュするだけです...これを変更したいので、新しいデータがあるときにプッシュします。
(私が最初に観察可能で、件名と直接私はそれを行う方法がわからないんだけど少しcomunicateすべきだと思う...)
すべてのヘルプは歓迎です!
'BehaviorSubject.from(mTrashCanList)' - リストの現在の値を取ります。リストの更新には反応しません。 –
本当に速い応答に感謝します。それは私の質問の要点です...私はそれがアップデートに反応する方法を知らない –