首页 > 解决方案 > 从 RecyclerView Room DB 中删除一行

问题描述

所以我有一个 recyclerView,当用户单击 LikeButton 时,项目/行将保存到 Room DB“favorite_table”和 UserFavorite 活动。

当用户再次单击选定的 LikeButton 时,我想从我的数据库和最喜欢的活动上的“favorite_table”中删除该行。使用mAppRepository.deleteRow(favoriteModel); 不会删除单击的行/项目。单击 LikedButton 时如何删除行/项目?recyclerView 的适配器:

标签: androiddatabaseandroid-recyclerviewandroid-room

解决方案


假设您的房间数据库设置正确,您必须同时从数据库和适配器中删除才能实时查看结果。在 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();

            }

推荐阅读