У меня есть опция длинного нажатия в моем списке просмотра, которая удалит запись в долго нажатой базе данных.Удаление действительно работает.Если я выхожу из приложения и возвращаюсь, мне выдается сообщение «нет строк».Идеальный.
В моем коде я сначала вызываю метод DBadapter для удаления строки.Затем я вызываю метод fetchallnotes в dbadapter, чтобы обновить мой список.Однако последняя строка не исчезнет при этом вызове fetchallnotes. Только при вызове fetchallnotes в моем onCreate.
Вот мой вызов контекстного меню, который вызывает мой метод DBAdapter
db.deleteNote(info.id);
getSnapz();
Это мой метод deleteNote в DBAdapter
public boolean deleteNote(long rowId) {
return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}
, здесь мой метод getSnapz, который находится в моей основной деятельности, где мой просмотр списка
public void getSnapz(){
try {
Cursor c = db.fetchAllNotes();
//requery cursor incase the last entry has been deleted
c.requery();
startManagingCursor(c);
if(c.moveToFirst()){
String[] from = new String[]{DBAdapter.KEY_TYPE,DBAdapter.KEY_WEIGHT,DBAdapter.KEY_DATE,DBAdapter.KEY_PLACE};
int[] to = new int[]{R.id.typecol,R.id.weightcol,R.id.datecol,R.id.placecol};
SimpleCursorAdapter simple = new SimpleCursorAdapter(this, R.layout.snapz_row, c, from, to);
setListAdapter(simple);
}
} catch (Exception e) {
Log.e(TAG,e.toString());
}
}
А вот мой метод fetchAllNotesв DBAdapter
public Cursor fetchAllNotes() throws Exception{
Cursor c = db.query(DATABASE_TABLE, new String[] {KEY_ROWID,KEY_URI, KEY_DATE,KEY_TYPE,KEY_WEIGHT,
KEY_PLACE},
null, null, null, null, null );
return c;
}