首页 > 解决方案 > 如何使用 RxAndroid/Retrofit 将项目添加到一次性 Observable 列表

问题描述

我正在调用 API 并返回自定义对象列表 ( Observable<ArrayList<Pin>>)。在将列表发送回订阅者之前,我想添加一个我在本地创建的对象,并且与 API 调用分开。这是我的代码:

        val requestInterface = Retrofit.Builder()
            .baseUrl(context.resources.getString(R.string.ulr_pins))
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .build().create(PinsService::class.java)

        disposable.add(requestInterface.getPins()
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(Schedulers.io())
            //How do I add a custom Pin object to the list retrieved in requestInterface.getPins before I send it to the callback?
            .subscribe(callback))

标签: androidobservableretrofitrx-java2rx-android

解决方案


使用map操作,您可以通过以下方式将数据转换为任何内容map

disposable.add(requestInterface.getPins()
        .map{ it ->
            it.add(customPinObject)
            it
        }
        .observeOn(AndroidSchedulers.mainThread())
        .subscribeOn(Schedulers.io())
        .subscribe(callback))

推荐阅读