まず、データベースから取得したトランザクション(行)を削除できません
行61は、arg0.getItemAtPosition(arg2)
の結果をキャストしています。 Cursor
へ 、ただし、戻りタイプはおそらくHashMap
(Logcatの出力にあるように)。通常、Cursor
を取得します データベースクエリから。
各データベース行のIDをHashMap
に配置した場合 ビルドするときに、そのIDをdeleteTransaction()
に渡すことができます。 onClick
を呼び出します イベント。だから、あなたは必要です
temp.put("Id", localCursor.getInt(localCursor.getColumnIndex("_id")));
getAllTransaction()
で 、次にonClick()
を修正します このようなことをする方法:
localDbCrud.open();
HashMap itemMap = (HashMap)localAdapter.getItem(arg2);
int item_id = Integer.parseInt((String)itemMap.get("Id"));
DbCrud.deleteTransaction(item_id);
localDbCrud.close();
arg2
の名前も変更することをお勧めします (およびその他)コードをわかりやすくするために、より明確な名前を付ける。
次に、エントリを削除した後にリストビューを更新する方法を知る必要があります
notifyDataSetChanged()
を呼び出すことができます アダプターでListView
を更新します データセットに変更を加えた後。
編集:SimpleAdapter
に注意してください は静的データを対象としているため、マイレージは異なる場合があります。最善の解決策は、おそらくArrayAdapter
などの別のタイプのアダプターに切り替えることです。 、または新しいSimpleAdapter
を作成します データセットを変更するたび。