私は長い押したオプションを持っています。削除は実際に機能します。私がアプリから出て戻ってきたら、私の「いいえの行」のメッセージが表示されます。完璧。sqlite最後の行の更新が無効になっています
私のコードでは、最初に行を削除するDBadapterメソッドを呼び出します。次に、dbadapterのfetchallnotesメソッドを呼び出してリストビューを更新します。しかし、最後の行は、このfetchallnotes呼び出しでは消えません。fetchallnotes呼び出しでのみonCreateが呼び出されます。ここで
は私のDBAdapter方法
db.deleteNote(info.id);
getSnapz();
を呼び出して、私のコンテキストメニューの呼び出しは、ここでDBAdapter
public boolean deleteNote(long rowId) {
return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}
でこの私の私のdeleteNote方法がある私のメインの活動である私の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メソッドはDBAdaですpter
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;
}
また、あなたのrequery()呼び出しは不要だと思います.db.fetchAllNotes()を呼び出す前に行が既に消えてしまっています。 – jcwenger
ありがとうございました。あなたのアドバイスは非常に高く評価されています! – Stephen