private void subscribeToModel() {
final MyViewModel model = ViewModelProviders.of(this)
.get(MyViewModel.class);
// Update the list when the data changes
model.getItems().observe(this, new Observer<List<Item>>() {
@Override
public void onChanged(@Nullable List<Item> items) {
// Do something useful
}
});
}
上面的代码在"AppCompatActivity"或"FragmentActivity"上效果很好。但是,它不适用于其他类型的活动(例如,对我来说:GvrActivity)。ViewModelProviders.of() 期待 'FragmentActivity'。
有没有另一种方法来观察数据库?
至于数据库,我正在使用ROOM。
回答我自己的问题。
观察房间数据库是解决方案。谢谢共享资源。
以下是完整的解决方案:
private void subscribeToModel() {
final DatabaseCreator databaseCreator = DatabaseCreator.getInstance();
LiveData<List<Item>> itemLiveData = databaseCreator.getDatabase().itemDao().getAllLiveData();
if(itemLiveData != null) {
itemLiveData.observe(this, new Observer<List<Item>>() {
@Override
public void onChanged(@Nullable List<Item> items) {
// Do something useful
}
});
}
}