我像这样实例化我的回收器视图:
全局变量:
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中做