小编nei*_*e-i的帖子

RecyclerView 未使用 SubmitList() 和 LiveData 自动刷新

情况如下:

我有一个RecyclerView正在Fragment使用DataBinding. 它的适配器是一个ListAdapter.

class MyFragment : Fragment() {
    override fun onCreateView(...) {
        val binding = // inflate layout with DataBindingUtil

        val myListAdapter = MyListAdapter()
        binding.recyclerView.adapter = myListAdapter

        val myViewModel: MyViewModel by activityViewModels()
        myViewModel.myLiveData.observe(viewLifecycleOwner, Observer {
            println("before submit: ${myListAdapter.currentList}")
            myListAdapter.submitList(it)
            println("after submit: ${myListAdapter.currentList}")
        })

        return binding.root
    }
}
Run Code Online (Sandbox Code Playgroud)

要显示的数据由 表示List<Double>。设置后,列表将用于初始化 a,MutableLiveData如下所示:

class MyViewModel : ViewModel() {
    val data = listOf<Double>(/* init with some values */)
    val myLiveData = MutableLiveData(data) …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-recyclerview android-livedata android-diffutils

4
推荐指数
1
解决办法
2895
查看次数