【发布时间】:2018-03-03 19:32:42
【问题描述】:
当我尝试从接口调用DAO 时遇到问题。
这里是我调用观察者方法的地方:
mCategories = ViewModelProviders.of(FragmentCategories.this).get(CategoriesViewModel.class);
//...
mCategories.getCategories(context).observe(this, listC -> {
ArrayList<Category> newList=new ArrayList<>(listC);
final DiffUtil.DiffResult result = DiffUtil.calculateDiff(
new CategoriesDif(list,newList), false);
list.clear();
list.addAll(newList);
result.dispatchUpdatesTo(myAdapter);
onItemsLoadComplete();
});
这是我将对象添加到数据库时:
private ColorPicked colorPicked = null;
//...
if (x) {
colorPicked = () - > {
Category c = new Category();
c.name = input.toString();
new AddCategoryOrLinkToDB().execute(c);
colorPicked = null;
dialog.dismiss();};
new ColorChooserDialog.Builder(MainActivity.this, R.string.color_palette)
.titleSub(R.string.colors)
.dynamicButtonColor(false)
.show(MainActivity.this);
} else {
Category c = new Category();
c.name = input.toString();
new AddCategoryOrLinkToDB().execute(c);
colorPicked = null;
dialog.dismiss();
}
//...
@Override
public void onColorChooserDismissed(@NonNull ColorChooserDialog dialog) {
if (colorPicked != null) {
colorPicked.chosen();
}
}
为什么,如果我打电话给
new AddCategoryOrLinkToDB().execute(c)colorPicked,观察者不触发停止工作?
【问题讨论】:
标签: android viewmodel dao android-room android-livedata