sqliteデータベースから行を削除する際に奇妙な問題が発生しています。初めて行を削除しようとすると、正常に機能しているようです。ただし、その後はエラーが発生せず、選択した行が削除されません。アプリをアンインストールしてEclipseから再実行すると(テストのためにタブレットをPCに接続しています)、最初の削除が再び機能します。
これが、データベースからギャラリービューにデータを入力するために使用しているコードです。
Cursor cursor = _garmentAdapter.fetchAllLooks();
cursor.moveToLast();
final ArrayList<Bitmap> al = new ArrayList<Bitmap>();
_labels=new ArrayList<String>();
int totalGarments=0;
for(int i=cursor.getCount()-1; i>=0; i--) {
totalGarments++;
Bitmap bd=BitmapFactory.decodeFile(cursor.getString(3));
String label=cursor.getString(1);
al.add(bd);
_labels.add(label);
cursor.moveToPrevious();
}
Toast.makeText(BrowseLooks.this, "ITEMS=="+totalGarments, Toast.LENGTH_SHORT).show();
このトーストメッセージは、画面上のアイテムの数を表示しています。たとえば、3つのアイテムを作成してから、1を削除すると、画面に2が表示され、トーストにはITEMS==2と表示されます。ただし、別のアイテムを削除しても、画面には2つのアイテムがあり、ITEMS==2です。したがって、カーソルは正しく機能しているように見えますが、データベースは機能していません。
データベースの削除行のコードは次のとおりです。
return mDb.delete(LOOKS_TABLE, KEY_ROWID+"="+rowId, null)>0;
また、mDbが呼び出されたときにrowIdが正しいものとしてログに記録しました。
繰り返しになりますが、エラーは発生していません。コードが機能していないだけです。どんな助けでも大歓迎です。