[英]Delete a row from sqlite database inside a recyclerview
我有一個記事本應用程序,將注釋存儲在sqlite數據庫中,並在recyclerview中顯示它們。 我的回收者視圖中有一個可繪制對象,我想通過單擊它來刪除數據庫行。 使用我編寫的代碼,當我單擊圖像時,recycleview項目消失了,但是當我再次打開應用程序時,筆記仍然存在。 我不知道如何刪除它。 這是我的代碼:
public class ModelRs {
private String title;
private String content;
int id ;
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
這是我的Databasehelper類以及insert和delete方法
public void insert(ModelRs modelRs) {
ContentValues values = new ContentValues();
values.put(c_title, modelRs.getTitle());
values.put(c_content, modelRs.getContent());
values.put(c_id,modelRs.getId());
try {
this.getWritableDatabase().insert(t_name, null, values);
} catch (Exception e) {
e.printStackTrace();
}
}
public List<ModelRs> list() {
List<ModelRs> list = new ArrayList<>();
Cursor c = this.getWritableDatabase().query(t_name, new String[]{c_id, c_title, c_content}, null, null, null, null, null);
if (c.moveToFirst()) {
do {
ModelRs modelRs = new ModelRs();
modelRs.setTitle(c.getString(c.getColumnIndex(c_title)));
modelRs.setContent(c.getString(c.getColumnIndex(c_content)));
list.add(modelRs);
} while (c.moveToNext());
}
return list;
}
public void delete(int id) {
SQLiteDatabase sqLiteDatabase = getWritableDatabase();
sqLiteDatabase.delete(t_name, c_id + "=" + id, null) ;
}
}
這是我的recyclerview適配器。 點擊偵聽器方法中的圖像在視圖持有人類中
@Override
public void onBindViewHolder(AdapterRs.ViewHolderMain holder, final int position) {
final ModelRs model = modelRs.get(position);
holder.TextView_title.setText(model.getTitle());
holder.TextView_content.setText(model.getContent());
}
class ViewHolderMain extends RecyclerView.ViewHolder{
private TextView TextView_title;
private TextView TextView_content;
private ImageView ImageDelete ;
int id;
public ViewHolderMain(View itemView) {
super(itemView);
TextView_title=itemView.findViewById(R.id.TextView_title);
TextView_content=itemView.findViewById(R.id.TextView_content);
ImageDelete = itemView.findViewById(R.id.deleteicon) ;
itemView.setClickable(true);
ImageDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
id = getAdapterPosition() ;
mydatabase = new DataBaseHelper(context) ;
mydatabase.delete(id);
modelRs.remove(id) ;
notifyItemRemoved(id);
notifyDataSetChanged();
}
});
}
}
我是SQLite數據庫的新手。 如果可以,請你幫助我
您必須在viewholder類上編寫onClick事件。 在您的情況下為“ ViewHolderMain”。 你必須把
itemView.setClickable(true);
在ViewHolderMain構造函數上。 那么您只需編寫點擊事件。
ImageDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Your delete method
}
});
從sqlite刪除項目后,您必須添加
notifyDataSetChanged();
也從視圖中刪除該項目..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.