Android 从RecyclerView房间数据库中删除一行
因此,我有一个recyclerView,当用户单击类似按钮时,项目/行将保存到房间DB“favorite_table”和用户favorite活动中 用户最喜爱的活动: 当用户再次单击所选的LikeButton时,我想从my DB和favorite activity的“favorite_table”中删除该行。使用mAppRepository.deleteRow(favoriteModel)不会删除单击的行/项目。单击Liked按钮时如何删除行/项?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
@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();
}