从recyclerview内的sqlite数据库中删除一行

时间:2018-12-15 13:43:20

标签: android sqlite android-studio android-recyclerview

我有一个记事本应用程序,可将注释存储在sqlite数据库中并在recyclerview中显示。我的回收者视图中有一个可绘制对象,我想通过单击它来删除数据库行。使用我编写的代码,当我单击图像时,recycleview项目消失了,但是当我再次打开应用程序时,笔记仍然存在。我不知道如何删除它。这是我的代码:

maven-ear-plugin

这是我的Databasehelper类以及insert和delete方法

public class ModelRs {
private String title;
private String content;
int id ;

public void setId(int id) {
    this.id = id;
}

public int getId() {
    return id;
}

这是我的recyclerview适配器。点击侦听器方法中的图像位于视图持有人类中

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

我是SQLite数据库的新手。如果可以,请帮助我

1 个答案:

答案 0 :(得分:0)

您必须在viewholder类上编写onClick事件。在您的情况下为“ ViewHolderMain”。您必须输入

itemView.setClickable(true);

在ViewHolderMain构造函数上。那么您只需编写点击事件。

ImageDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Your delete method 
            }
        });

从sqlite删除项目后,您必须添加

notifyDataSetChanged();

也可以从视图中删除该项目。