Я хочу удалить элемент списка, щелкнув по нему с помощью диалогового окна. Когда я нажимаю на элемент списка, я хочу получить данные идентификатора этого элемента с помощью курсора. Так что я могу использовать этот идентификатор строки, чтобы удалить всю строка в базе данных.
reminderList = new ArrayList<>();
final Cursor data = myDB.getListContents();
int numRows = data.getCount();
if(numRows==0) {
Toast.makeText(ReminderList.this,"Empty Database " ,Toast.LENGTH_SHORT).show();
} else {
while(data.moveToNext()) {
item = new Item(data.getString(0),data.getString(2),data.getString(3));
reminderList.add(item);
}
adapter = new ListAdapter(this,R.layout.reminder_list,reminderList);
listView = findViewById(R.id.listView);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, final int position, long id) {
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(ReminderList.this);
alertBuilder.setTitle("Delete?");
alertBuilder.setMessage("Are You Sure You Wanna Delete? ");
final int positionToRemove = position;
final String idtoDelete = data.getString(0); //**This code is not working** // **data is the cursor and 0 is the index of ID**
alertBuilder.setNegativeButton("Cancel",null);
alertBuilder.setPositiveButton("Ok", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//String Cols = data.get;
Integer deletedRows = myDB.deleteData(idtoDelete);//**I want to fetch the id from sql table(using cursor) from item clicked and put it here**
if(deletedRows > 0)
{
Toast.makeText(ReminderList.this,"Data Deleted",Toast.LENGTH_SHORT).show();
}
else
Toast.makeText(ReminderList.this,"Data Not Deleted",Toast.LENGTH_SHORT).show();
adapter.notifyDataSetChanged();
}
});
alertBuilder.show();
}
});
}
Это класс DatabaseHelper. Я хочу получить идентификатор Col1, используя класс курсора
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "mylist.db";
public static final String TABLE_NAME = "mylist_data";
public static final String COL1 = "ID";
public static final String COL2 = "EVENT";
public static final String COL3 = "TIME";
public static final String COL4 = "DATE";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String createTable = "CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, " +
" EVENT TEXT, TIME TEXT, DATE TEXT)";
db.execSQL(createTable);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(" DROP IF TABLE EXISTS " + TABLE_NAME);
onCreate(db);
}
public boolean addData(String event1, String time1, String date1) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL2, event1);
contentValues.put(COL3, time1);
contentValues.put(COL4, date1);
long result = db.insert(TABLE_NAME, null, contentValues);
//if data is inserted incorrectly it will return -1
if (result == -1) {
return false;
} else {
return true;
}
}
public Integer deleteData(String id){
SQLiteDatabase db = this.getWritableDatabase();
return db.delete(TABLE_NAME,"ID = ?",new String[] {id} );
}
public Cursor getListContents(){
SQLiteDatabase db = this.getWritableDatabase();
Cursor data = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);
return data;
}
}