无法使用RxJava + Kotlin解析数据

时间:2017-07-10 16:51:49

标签: android rx-java kotlin retrofit2

因此,我尝试解析返回特定用户组的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甚至打印出来时,一切看起来都很好。群组[0]给了我正确的信息。但是,当我尝试打印出GROUPS [0]时,在这个compositeDisposable之外的任何地方,应用程序崩溃并说它为null。我在这里处理一个明显的范围问题?这个compositeDisposable只在subscribe方法本身中保存我的数据吗?这里的任何帮助将不胜感激。

编辑:要进一步添加,下面的代码,在第一个system.out中显示信息,在第二个中它是null。

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])

1 个答案:

答案 0 :(得分:0)

在异步响应中移动我的视图的实例化导致正确的数据显示。