У меня есть recyclerview с базой данных sqlite, но при попытке удалить элемент в списке в базе данных удаляются неправильные элементы.
Это метод добавления списка:
int indexId = cursor.getColumnIndex("id");
cursor.moveToFirst();
do {
int id = cursor.getInt(indexId);
//....other variables
//inserting into the list
soilList.add(new ListSoil(id, soilName, remarks, date, nitrogen, phosphorus, potassium, moisture, temperature));
Log.d("DataFragment", "id: " + id); //result here has the right id
} while (cursor.moveToNext());
cursor.close();
Кнопка удаления: у меня есть журнал, и я продолжаю получать сообщение «Идентификатор элемента, на который нажали: 1». вот почему неправильный элемент удаляется. он не получает правильный идентификатор. Здесь также нельзя использовать getAdapterPosition, возникнет та же проблема.
delete.setOnClickListener(new View.OnClickListener(){
db = new Database(itemView.getContext());
db = new Database(itemView.getContext());
db.deleteOneRow(list.getId());
Log.d("DeleteButton", "clicked item id: " + list.getId());
}
метод удаления строки в базе данных
public int deleteOneRow(int id){
SQLiteDatabase db = getWritableDatabase();
Log.d("DeleteMethod", "Deleting row with ID in table: " + id);
return db.delete("SoilData", "id = ?", new String[]{String.valueOf(id)});
}
Класс списка:
int id; //..other variables
public ListSoil(int id, String soilName, String remarks, String date, double nitrogenInput, double phosphorusInput, double potassiumInput, double moistureInput, double tempInput) {
this.id = id;}
//i have getId()
Подробнее здесь: https://stackoverflow.com/questions/781 ... e-database