gpt4 book ai didi

android - 对 retrofit 电话作出 react

转载 作者:行者123 更新时间:2023-11-29 01:14:54 26 4
gpt4 key购买 nike

我有一个应用程序,它有一个包含 4 个 fragment 的 viewpager。我想用我服务器中的数据填充所有 fragment 。我在 Activity 中加载数据,我想将其分发到所有 fragment 。

所以我有这个签名:

@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(this@TrashCansInfoActivity, "Erro ao carregar informações",
Toast.LENGTH_SHORT).show()
e.printStackTrace()
}

override fun onNext(trashCanList: List<TrashCan>) {
mTrashCanList = trashCanList
}
})

然后我有一个方法可以从这个列表中获取一个 Observable:

override fun getObservable(): Observable<TrashCan> {
return BehaviorSubject.from(mTrashCanList)
}

然后我进入我的 fragment :

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
}

嗯……这应该行得通,但行不通。碰巧我的第一个 fragment 变空而第四个 fragment 有数据。 (第二个和第三个不应该有任何数据......他们没有)

所以我认为:当 fragment 被创建时,列表仍然是空的,所以 Activity 中的 Observable 没有提供任何东西......但是当 View 分页器进入第四个 fragment 时,列表不再为空,所以我的屏幕显示数据。

我的问题是:如何让 Activity 中的 Observable 不断将数据推送到 fragment 中?现在,它只在 Observable 被订阅时推送数据......我想改变因此,当有新数据时它会推送。

(我认为第一个 Observable 应该直接与 Subject 通信,但我不确定该怎么做...)

感谢任何帮助!

最佳答案

你的问题是这个操作只获取列表的当前值而不对更新使用react(为什么要这样做?):

BehaviorSubject.from(mTrashCanList)

作为 Activity 中的一个选项,您可以将 BehaviorSubject 订阅到 Observable:

ServiceGenerator.createService(ApiClient::class.java)
.getTrashCans()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(yourSubject)

然后返回它而不是你的主题:

override fun getObservable(): Observable<TrashCan> {
return yourSubject.asObservable()
}

关于android - 对 retrofit 电话作出 react ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40510891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com