【发布时间】:2021-08-17 05:51:12
【问题描述】:
点击按钮时调用此方法
@Override
public void onFavoriteIconClicked() {
viewModel.isFavoriteExist(test.getId()).observe(getViewLifecycleOwner(), new Observer<Boolean>() {
@Override
public void onChanged(Boolean aBoolean) {
viewModel.isFavoriteExist(test.getId()).removeObserver(this);
if (aBoolean) {
binding.addToFavorite.setImageResource(R.drawable.non_fav);
viewModel.delete(test);
} else if (getActivity() != null) {
Test test2 = new Test(test.getId(), test.getName());
viewModel.insert(test2);
binding.addToFavorite.setImageResource(R.drawable.fav);
}
}
});
}
如果测试对象存在于收藏夹数据库中,我必须将其删除。删除后,它再次调用它(因为它观察到了一个chane)并再次插入它。
它会无限循环。有没有更好的方法来实现或阻止它?
【问题讨论】:
-
所以你想删除它?或插入它?由于它会检测 db 中的更改,因此您必须选择删除/插入它
-
@Teo 它切换,如果它存在于数据库中,它会删除。如果它不在 DB 中,它会插入。
标签: java android android-room android-livedata