Individual rows in the database are populated in a custom listview. the id of the row is also displayed in the listview. All I want is to delete a particular row by clicking on the corresponding list.
Here is the code I used to display the contents of the database:
class NoteAdapter extends CursorAdapter {
public NoteAdapter(Cursor c) {
super(Reccuring.this, c);
}
@Override
public void bindView(View row, Context ctxt, Cursor c) {
NoteHolder holder = (NoteHolder) row.getTag();
holder.populateFrom(c, helper);
}
@Override
public View newView(Context ctxt, Cursor c, ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View row = inflater.inflate(R.layout.row1, parent, false);
NoteHolder holder = new NoteHolder(row);
row.setTag(holder);
return row;
}
}
static class NoteHolder {
private TextView name = null;
private TextView number = null;
private TextView idtext = null;
NoteHolder(View row) {
name = (TextView) row.findViewById(R.id.noteText);
number= (TextView) row.findViewById(R.id.noteText1);
idtext = (TextView) row.findViewById(R.id.noteText3);
}
void populateFrom(Cursor c, NoteHelper helper) {
name.setText(helper.getNote(c));
number.setText(helper.getNote1(c));
idtext.setText(helper.getNote2(c));
}
}
And here's my database:
public class NoteHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "Test.db";
private static final int SCHEMA_VERSION = 1;
public NoteHelper(Context context) {
super(context, DATABASE_NAME, null, SCHEMA_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE Notes (_id INTEGER PRIMARY KEY AUTOINCREMENT, note TEXT, num TEXT, sDate TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
public void insert(String note, String amt, String sDate) {
ContentValues cv = new ContentValues();
cv.put("note", note);
cv.put("num", num);
cv.put("sDate", sDate);
getWritableDatabase().insert("Notes", "notes", cv);
}
public String getNote(Cursor c) {
return (c.getString(1));
}
public String getNote1(Cursor c) {
return (c.getString(2));
}
public String getNote2(Cursor c) {
return (c.getString(0));
}
public Cursor getAll() {
return (getReadableDatabase().rawQuery(
"SELECT _id, note, num, sDate FROM Notes", null));
}
}
}
How can I select the rows in the listview and delete the corresponding rows in the database.
First get the value at position which is clicked by method
onItemClickListener()
of list view:Then go to your database class and write this code:
This way you can delete your table particular row.
If you are not able to do with this or may be notes column in database are same so use unique Id to set in text view of listview, extract it in this form and then pass that value to the database code and then delete it.