sql >> データベース >  >> RDS >> SQLite

AndroidのListViewでクエリを削除して更新する(sqlite)

    まず、データベースから取得したトランザクション(行)を削除できません

    行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を作成します データセットを変更するたび。




    1. テキスト配列に入力と同様の値が含まれている行を検索する

    2. PostgreSQLテーブルの行のカウントを高速化するにはどうすればよいですか?

    3. 1日に複数のレコードを選択するにはどうすればよいですか?

    4. postgresqlで月と年ごとにクエリ結果をグループ化します