如何使用 recyclerView with LiveData



我像这样实例化我的回收器视图:

全局变量:

private MainViewModel mainViewModel;
private RecyclerView recyclerView;
private RecyclerView.Adapter adapter;
private RecyclerView.LayoutManager layoutManager;

回收者查看:

observeAll();
recyclerView= findViewById(R.id.recycler_view);
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
adapter = new RecyclerViewAdapter();
recyclerView.setAdapter(adapter);

问题是,我需要将我从LiveData获得的列表传递给adapter

我可以像这样得到我的列表:

private void observeAll() {
mainViewModel.getAll().observe(this, new Observer<Animals>() {
@Override
public void onChanged(Animals animals) {
Log.i("MainActivity", String.valueOf(animals.getTotalResults()));
}
});
}

但是如果我尝试将适配器设置在onChange里面,它不起作用

使用 livedata 和 recyclerview的最佳方法实际上是使用 ListAdapter 而不是常规的 recyclerview 适配器。由于listAdapter使用DIFF UTILS,它将自动更新您的列表,而不会刷新所有内容,如notifyDataSetChanged((一样,它还将仅使用与上一个列表不同的元素更新您的列表。

你可以在这里检查如何在Java中做

最新更新