【发布时间】:2020-03-29 19:06:53
【问题描述】:
这是我的 CartProductItemDao。
@Dao
public interface CartProductItemDao {
@Query("select * from CartProductItem where product__category__id = :id")
LiveData<List<CartProductItem>> getCartProductItemList(int id);
@Query("select * from CartProductItem where product__id in (:items)")
LiveData<List<CartProductItem>> getAllProductsSectionItem(ArrayList<Integer> items);
@Query("Select * from CartProductItem where product__fav_market_id =:id")
LiveData<List<CartProductItem>> geAllCartProductItemList(int id);
}
这是我的 CartProductItemRepository。
public class CartProductItemRepository {
LiveData<List<CartProductItem>> cartProductItemList;
CartProductItemDao cartProductItemDao;
public CartProductItemRepository(Application application) {
TreaderOnlineDatabase treaderOnlineDatabase=TreaderOnlineDatabase.getInstance(application);
cartProductItemDao=treaderOnlineDatabase.cartProductItemDao();
}
public LiveData<List<CartProductItem>> getCartProductItemList(int cat_id) {
cartProductItemList= cartProductItemDao.getCartProductItemList(cat_id);
return cartProductItemList;
}
}
这是我的 CartProductItemViewModel。
public class CartProductItemViewModel extends AndroidViewModel {
LiveData<List<CartProductItem>> cartProductItemList;
LiveData<List<CartProductItem>> productSectionItemList;
LiveData<List<CartProductItem>> allCartProductItem;
CartProductItemRepository cartProductItemRepository;
SharedPreferenceClass sharedPreferenceClass;
public CartProductItemViewModel(@NonNull Application application) {
super(application);
cartProductItemRepository=new CartProductItemRepository(application);
sharedPreferenceClass=new SharedPreferenceClass(getApplication());
//cartProductItemList=cartProductItemRepository.getCartProductItemList();
}
public LiveData<List<CartProductItem>> getCartProductItemList(int id) {
cartProductItemList=cartProductItemRepository.getCartProductItemList(id);
return cartProductItemList;
}
}
我从片段内部调用了 getCartProductItemList(cat_is) 这是代码
@Override
public void recyclerViewOnClick2() {
CartProductItemViewModel cartProductItemViewModel;
cartProductItemViewModel=ViewModelProviders.of(this).get(CartProductItemViewModel.class);
int x=sharedPreferenceClass.getSharedPreferenceCatId();
cartProductItemViewModel.getCartProductItemList(x).observe(this, new Observer<List<CartProductItem>>() {
@Override
public void onChanged(List<CartProductItem> cartProductItems) {
product_categoriesFragmentAdpter.setArrayList(cartProductItems, getContext());
}
});
}
当我对表进行更新或删除或插入此观察者多次调用时出现的问题。
【问题讨论】:
-
仅供参考,您可以使用 markdown 样式 ``` 来标记代码块的开始和结束。
-
你从哪里调用这个方法:recyclerViewOnClick2()?/确保你没有多次触发它,因为你有这个对象本地:CartProductItemViewModel cartProductItemViewModel;
-
当用户点击 RecyclerView 的项目时,我从 RecyclerViewAdapter 内部调用它。
-
@Nilesh B “确保你没有多次触发它,因为你有这个本地对象”是什么意思?
-
@SaddamAlwaheab chekc 如果您多次调用此方法。
标签: android android-room android-livedata android-mvvm