0

私はStackOverflowを何日も閲覧していて、問題の解決策を探していますが、質問された同様の質問はすべて、理解するのが非常に複雑です。

これが次のとおりです。SQLiteデータベースの要素を表示するListViewがあります。このために、SimpleCursorAdapterを使用します。私のコードは最適化されていませんが、私は初心者です。

これが私のコードです:

protected boolean onLongListItemClick(final View v, final int pos, long id) 
        {
           final String str=ReservationList.getItemAtPosition(pos).toString();
           Log.i("ListView", "onLongListItemClick string=" + str);
           AlertDialog.Builder builder = new AlertDialog.Builder(FlightBook.this);
           builder.setMessage("Delete this entry from Flight Book?")
           .setCancelable(false)
           .setPositiveButton("Yes", new DialogInterface.OnClickListener() 
           {
               public void onClick(DialogInterface dialog, int id) 
               {
                   Log.i("ID",""+pos);
                   rdb.removeReservationWithID((int)mAdapter.getItemId(pos));
                   **//NEED SOME CODE HERE TO REFRESH LISTVIEW AUTOMATICALLY**
               }
           })
           .setNegativeButton("No", new DialogInterface.OnClickListener() 
           {
               public void onClick(DialogInterface dialog, int id) 
               {
                   dialog.cancel();
               }
           });
           AlertDialog alert = builder.create();
           alert.show();
           return true;
        }

私が必要としているのは、ListViewを自動的に更新するために、コードで言及した行に何を入れるべきかを知ることだけです。アダプターでnotifyDataChanged()を試しましたが、機能しません(スレッドや、ASyncTaskなどの非常に複雑なものを使用する必要があることはわかっていますが、この特定の場合の使用方法については正しく説明されていません)。

あなたの援助に感謝します、そしてあなたが本当に私を助けたいのなら、私にリンクではなくコードを与えてください!:)

4

2 に答える 2

0

次のように、新しいデータで新しいカーソルを作成し、アダプターにロードする必要があります。

myListAdapter.changeCursor(getCursor());
于 2012-11-24T16:09:30.187 に答える
0

ここではローダーを使用する必要があります。
LoaderManager は、はるかにインテリジェントで汎用的な実装です。startManagingCursor
も 非推奨ですRestart Loaderを呼び出すと、ビューが更新されます

LoaderManager を理解する
データを適切にロードするを参照してください。

于 2012-11-24T16:51:30.610 に答える