【发布时间】:2017-07-10 16:51:49
【问题描述】:
所以我试图解析返回特定用户组的 JSON 响应。一切都正确返回,我尝试将它添加到一个可变列表中,该列表应该在我的整个文件中保持不变。
private var GROUPS: MutableList<GroupObject> = ArrayList()
我的 RxJava 在这里调用
val getUserGroups = ApiProvider.getUserGroups()
compositeDisposable.add(
getUserGroups.getUserGroups(prefs!!.accessToken)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe ({
result ->
result.groups.mapTo(GROUPS) {
GroupObject (
it.id, it.groupName
)
}
}, { error ->
error.printStackTrace()
})
)
当我打印出 result.groups 时,一切看起来都很好,甚至打印出 GROUPS[0] 也会给我正确的信息。但是,当我尝试打印出 GROUPS[0] 时,在这个compositeDisposable 之外的任何地方,应用程序都会崩溃并说它为空。我在这里处理一个明显的范围问题?这个compositeDisposable 是否仅将我的数据保存在订阅方法本身中?在这里的任何帮助将不胜感激。
编辑:进一步添加以下代码,在第一个 system.out 中显示信息,在第二个中为空。
val getUserGroups = ApiProvider.getUserGroups()
compositeDisposable.add(
getUserGroups.getUserGroups(prefs!!.accessToken)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe ({
result ->
result.groups.mapTo(GROUPS) {
GroupObject (
it.id, it.groupName
)
}
System.out.println(GROUPS[0])
}, { error ->
error.printStackTrace()
})
)
System.out.println(GROUPS[0])
【问题讨论】:
-
你应该了解同步和异步。 stackoverflow.com/questions/748175/…
-
@muthuraj 我有点熟悉。在我当前的实现中,这是否意味着我实际上并没有访问结果值?如何将异步获取的值分配给组对象?
标签: android rx-java kotlin retrofit2