【问题标题】:Delete a single row from RecyclerView Room DB从 RecyclerView Room DB 中删除一行
【发布时间】:2020-04-19 22:52:03
【问题描述】:
所以我有一个 recyclerView,当用户单击 LikeButton 时,项目/行将保存到 Room DB“favorite_table”和 UserFavorite 活动。
当用户再次单击选定的 LikeButton 时,我想从我的数据库和最喜欢的活动上的“favorite_table”中删除该行。使用 mAppRepository.deleteRow(favoriteModel); 不会删除点击的行/项目。单击 LikedButton 时如何删除行/项目? recyclerView 的适配器:
【问题讨论】:
标签:
android
database
android-recyclerview
android-room
【解决方案1】:
假设您的房间数据库设置正确,您必须同时从数据库和适配器中删除才能实时查看结果。在 onBindViewHolder 的这一部分执行此操作:
if (mLocalStorage.isLessonFavorited(lessonsModel.getKey_id())) {
mLocalStorage.unFavoriteLesson(lessonsModel.getKey_id());
mAppRepository.deleteRow(favoriteModel);
//remove from database
mAppRepository.deleteRow(favoriteModelList.get(positon));
//remove from adapter
favoriteModelList.remove(position);
notifyDataSetChanged();
holder.fav_status.setLiked(false);
StyleableToast.makeText(v.getContext(), removeFromText, Toast.LENGTH_SHORT,
R.style.toastStyles).show();
}