Android 从RecyclerView房间数据库中删除一行

Android 从RecyclerView房间数据库中删除一行,android,database,android-recyclerview,android-room,Android,Database,Android Recyclerview,Android Room,因此,我有一个recyclerView,当用户单击类似按钮时,项目/行将保存到房间DB“favorite_table”和用户favorite活动中 用户最喜爱的活动: 当用户再次单击所选的LikeButton时,我想从my DB和favorite activity的“favorite_table”中删除该行。使用mAppRepository.deleteRow(favoriteModel)不会删除单击的行/项目。单击Liked按钮时如何删除行/项?recyclerView的适配器: @Ove

因此,我有一个recyclerView,当用户单击类似按钮时,项目/行将保存到房间DB“favorite_table”和用户favorite活动中

用户最喜爱的活动:

当用户再次单击所选的LikeButton时,我想从my DB和favorite activity的“favorite_table”中删除该行。使用mAppRepository.deleteRow(favoriteModel)不会删除单击的行/项目。单击Liked按钮时如何删除行/项?recyclerView的适配器:

@Override
    public void onBindViewHolder(@NonNull LessonsViewHolder holder, int position) {
        Log.i(TAG, "onBindViewHolder: Bind RecyclerView");

        final LessonsModel lessonsModel = mLessonsModelList.get(position);
        holder.BindLessonsModel(lessonsModel);

        holder.fav_status.setLiked(mLocalStorage.isLessonFavorited(lessonsModel.getKey_id()));
        holder.fav_status.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                FavoriteModel favoriteModel = new FavoriteModel();

                int fav_stat = lessonsModel.getFav_status();
                String title_norsk = lessonsModel.getTitle_Norsk();
                String title_pornun = lessonsModel.getTitle_Pronun();
                String title_tigrinya = lessonsModel.getTitle_Tigrinya();
                int audio = lessonsModel.getAudioRecource();
                String lesson_name = lessonsModel.getLesson_name();

                favoriteModel.setFav_status(fav_stat);
                favoriteModel.setTitle_Norsk(title_norsk);
                favoriteModel.setTitle_Tigrinya(title_tigrinya);
                favoriteModel.setTitle_Pronun(title_pornun);
                favoriteModel.setAudioRecource(audio);
                favoriteModel.setLesson_name(lesson_name);

                if (mLocalStorage.isLessonFavorited(lessonsModel.getKey_id())) {
                    mLocalStorage.unFavoriteLesson(lessonsModel.getKey_id());
                    mAppRepository.deleteRow(favoriteModel);
                    //mAppRepository.deleteAllFav();
                    //favoriteModelList.remove(position);
                    holder.fav_status.setLiked(false);
                    StyleableToast.makeText(v.getContext(), removeFromText, Toast.LENGTH_SHORT,
                            R.style.toastStyles).show();

                } else {
                    mLocalStorage.favoriteLesson(lessonsModel.getKey_id());
                    mAppRepository.insertToFV(favoriteModel);
                    holder.fav_status.setLiked(true);
                    StyleableToast.makeText(v.getContext(), addToFavText, Toast.LENGTH_SHORT,
                            R.style.toastStyles).show();
                }


            }
        });
    }

    @Override
    public int getItemCount() {
        if (mLessonsModelList != null) {
            return mLessonsModelList.size();
        } else {
            return 0;
        }
    }
“最喜欢的桌子”的FavoriteDAO


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

            }
package com.asenay.norsk_tigrinya.UserFavorite;

import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.Ignore;
import androidx.room.PrimaryKey;


@Entity(tableName = "favorite_table")
public class FavoriteModel {

    @PrimaryKey(autoGenerate = true)
    private Integer key_id;
    private String title_Norsk;
    private String title_Pronun;
    private String title_Tigrinya;
    private int mAudioRecource;

    @ColumnInfo(name = "fav_status")
    private int fav_status;
    private String lesson_name;

    public FavoriteModel() {
    }

/*  public FavoriteModel(String title_Norsk,
                         String title_Pronun,
                         String title_Tigrinya,
                         int audioRecource,
                         int fav_status,
                         String lesson_name) {
        this.title_Norsk = title_Norsk;
        this.title_Pronun = title_Pronun;
        this.title_Tigrinya = title_Tigrinya;
        this.mAudioRecource = audioRecource;
        this.fav_status = fav_status;
        this.lesson_name = lesson_name;
    }*/

    public Integer getKey_id() {return key_id;}

    public void setKey_id(Integer key_id) {this.key_id = key_id;}

    public String getTitle_Norsk() { return title_Norsk; }

    public void setTitle_Norsk(String title_Norsk) {this.title_Norsk = title_Norsk;}

    public String getTitle_Pronun() {return title_Pronun;}

    public void setTitle_Pronun(String title_Pronun) {this.title_Pronun = title_Pronun;}

    public String getTitle_Tigrinya() {return title_Tigrinya;}

    public void setTitle_Tigrinya(String title_Tigrinya) {this.title_Tigrinya = title_Tigrinya; }

    public int getAudioRecource() {return mAudioRecource;}

    public void setAudioRecource(int audioRecource) {mAudioRecource = audioRecource;}

    public int getFav_status() {return fav_status;}

    public void setFav_status(int fav_status) {this.fav_status = fav_status;}

    public String getLesson_name() {return lesson_name;}

    public void setLesson_name(String lesson_name) {this.lesson_name = lesson_name;}

}
            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();

            }