Удалить строку из базы данных sqlite в представлении реселлера - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть приложение для заметок, которое хранит заметки в базе данных sqlite и отображает их в виде утилиты.В моем представлении рециркулятора есть ничья, и я хочу удалить строку базы данных, щелкнув по ней.с кодом, который я написал, когда я нажимаю на изображение, элемент повторного просмотра исчезает, но когда я снова открываю приложение, заметка все еще там.Я не знаю, как удалить его.вот мой код:

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 и методы вставки и удаления

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.Пожалуйста, помогите мне, если вы можете

1 Ответ

0 голосов
/ 15 декабря 2018

Вы должны записать событие onClick в классе видоискателя.В вашем случае "ViewHolderMain".Вы должны поместить

itemView.setClickable(true);

в конструктор ViewHolderMain.тогда вы можете просто написать событие при нажатии.

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

После удаления элемента из sqlite вы должны добавить

notifyDataSetChanged();

, чтобы также удалить элемент из вида ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...