有什么方法可以使Retrofit2返回livedata而不是Observable吗?
如果可能的话,我们如何实现这种方法?
如果不可能,是否建议改型返回Observable,然后将其转换为livedata?
答案 0 :(得分:0)
您可以使用LiveDataReactiveStreams。
For example:
fun someMethod(id : Int) : LiveData<List<SomeObject>>{
return LiveDataReactiveStreams.fromPublisher(
repository.getDataFromSource(id)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()))
}
在这里,repository.getDataFromSource()返回一个Flowable。
答案 1 :(得分:0)
您必须添加
|ID | Dte_On | Dte_Off | Active |
| 1 | 01-JAN-2000 | 31-JAN-2008 | Y |
| 2 | 01-FEB-2008 | 1-DEC-2008 | N |
| 1 | 2-DEC-2008 | 31-JAN-2010| Y |
| 3 | 1-FEB-2010 | 1-DEC-2010 | N |
| 1 | 2-DEC-2010 | 31-12-9999 | Y |
在翻新适配器中。
我已经使用Dagger-2实现了:-
addCallAdapterFactory(LiveDataCallAdapterFactory())
创建类似GithubService的接口类:-
@Module(includes = [ViewModelModule::class])
class AppModule {
@Singleton
@Provides
fun provideGithubService(): GithubService {
return Retrofit.Builder()
.baseUrl("YOUR URL")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(LiveDataCallAdapterFactory())
.build()
.create(GithubService::class.java)
}
}
注入GithubService类,然后您可以获得:-
interface GithubService {
@GET("users/{login}")
fun getUser(@Path("login") login: String): LiveData<ApiResponse<User>>
}
LiveDataCallAdapterFactory会像这样
githubService.getUser(login)
作为参考,您可以看到此链接https://github.com/googlesamples/android-architecture-components/tree/master/GithubBrowserSample