【发布时间】:2021-10-20 06:46:37
【问题描述】:
我想在 Android 应用程序中使用过滤后的 Twitter V2 流。但无法理解如何使用改造和协程来实现这一点。请帮忙
【问题讨论】:
标签: android kotlin twitter retrofit coroutine
我想在 Android 应用程序中使用过滤后的 Twitter V2 流。但无法理解如何使用改造和协程来实现这一点。请帮忙
【问题讨论】:
标签: android kotlin twitter retrofit coroutine
首先你需要在你的app build.gradle 文件的依赖部分中导入retrofit 和kotlinx_coroutine_android。
然后在编码数据类和响应模型部分后,您需要在接口中定义api函数,但请记住使用'suspend'而不是回调,如下所示:
interface ApiService {
@GET("users")
suspend fun getUsers(): List<User>
}
然后您可以在存储库中的挂起函数中获取 api 响应,如下所示:
class MainRepository(private val apiHelper: ApiHelper) {
suspend fun getUsers() = apiHelper.getUsers()
}
然后在 viewmodel 中从存储库中获取数据,如下所示:
class MainViewModel(private val mainRepository: MainRepository) : ViewModel() {
fun getUsers() = liveData(Dispatchers.IO) {
emit(Resource.success(data = mainRepository.getUsers()))
}
}
(尝试使用更多状态来控制加载和错误,甚至使用 try/catch 块来控制错误)
最后,在您的 UI 中观察请求响应,如下所示:
viewModel.getUsers().observe(this, Observer {
it?.let { resource ->
recyclerView.visibility = View.VISIBLE
progressBar.visibility = View.GONE
resource.data?.let { users -> retrieveList(users) }
}
}
})
我假设您知道请求 Web 服务的完整过程,然后我只是解释了使用回调和使用挂起函数之间的区别。 如果还不够清楚,请给我发消息解释更多。
【讨论】: