我正在使用扩展函数将列表数据绑定(bind)到 recyclerview ,使用 pagedlist 它不需要任何协程
@BindingAdapter("pagedListAdapterData")
fun <T : Any> submitPagedList(recyclerView: RecyclerView, list: PagedList<T>?) {
if (list != null && recyclerView.adapter is PagedListAdapter<*, *>) {
(recyclerView.adapter as? PagedListAdapter<T, RecyclerView.ViewHolder>)?.submitList((list))
}
}
pagedListAdapterData="@{viewModel.list}"
但是当我升级到 Paging 3.0 时,它需要使用协程
@BindingAdapter("pagingDataAdapter")
fun <T : Any> submitPagingDataList(recyclerView: RecyclerView, list: PagingData<T>?) {
if (list != null && recyclerView.adapter is PagingDataAdapter<*, *>) {
GlobalScope.launch {
(recyclerView.adapter as? PagingDataAdapter<T, RecyclerView.ViewHolder>)?.submitData((list))
}
}
}
这工作得很好,但我担心的是 Globalscope 的使用,似乎有更好的方法来做到这一点,因为不推荐使用 globalScope
最佳答案
androidx.lifecycle
有一个扩展函数 View.findViewTreeLifecycleOwner
,所以你不必创建自己的:
view.findViewTreeLifecycleOwner()?.lifecycleScope?.launch {
...
}
关于android - 扩展函数上的协程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64570565/