我返回了 DAO 方法LiveData<List<Category>>
:
LiveData<List<Category>> listLiveData = categoryDao.getAll();
之后,我需要将此数据设置为我的适配器:
listLiveData.observe(this, categories -> {
if (categories == null || categories.isEmpty()) {
price.setVisibility(View.VISIBLE);
recyclerView.setVisibility(View.INVISIBLE);
} else {
categoryAdapter = new CategoryAdapter(categories);
categoryAdapter.setOnItemClickListener(new ClickHandler());
recyclerView.setAdapter(categoryAdapter);
}
});
如果我在数据库中没有数据,我会显示更新按钮(从服务器获取数据并插入数据库)。如果我有数据,我会创建适配器并为其设置数据。
之后,如果我将一些插入Category
数据库,我会得到:
- 触发观察方法并获取所有类别
- 使用此数据创建新适配器
我认为这是非常糟糕的做法(为更新每个项目创建一个新适配器),我可以通过某种方式:
更改我的适配器并添加方法
addData(List<Category> categories);
在 onCreateView 我创建适配器:
categoryAdapter = new CategoryAdapter(new ArrayList());
然后当我在observe
方法中获取数据时,我将它添加到适配器:
adapter.addData(categories);
并进入addData
循环中的方法检查每个项目,如果不存在则添加到列表并通知数据。
改变方法
LiveData> listLiveData = categoryDao.getAll();
至
LiveData<Category> category = categoryDao.getLast();
并将此项添加到observe
方法中。但我有 2 个问题: 1 - 如何首先添加所有数据?我必须实现 2 个方法getAll
(调用 wen 创建适配器)和getLast
(调用数据库中的每个插入)。2. 这个getLast
方法怎么写?
- 你会建议我的正确方法:)