0

私のメイン画面は、データベースからクエリされた名前のリストです。クリックすると、名前に関する特定の情報(電話番号、階層、メールIDなど)が表示されます。新しい連絡先を編集および追加するオプションもあります(そのためのボタンを追加しました) )。すべて正常に動作しますが、名前をデータベースに更新するとすぐに名前が表示されません。しかし、アプリケーションを再実行すると、変更が表示されます。名前を動的かつ効率的に表示するにはどうすればよいですか? 私が考えることができることの1つは、データベースに再度クエリを実行することです.onResumeとdisplay.しかし、それは十分に効率的ではないと感じています。また、startActivityforResult() を使用することもできますが、昇順で並べ替えることができず、一度に多くの連絡先をアップロードします。

コード

    // Make a New Database
    DBContact info = new DBContact(this);
    info.open();
    String[] data = info.queryAll();
    info.close();
    // Display the names
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(Contacts.this,
            android.R.layout.simple_list_item_1, data);
    listview.setAdapter(adapter);
4

5 に答える 5

1

CursorAdapter または SimpleCursorAdapter の使用を検討し、クエリの結果を配列アダプター内にラップする代わりに、ビューで直接使用することができます。

http://developer.android.com/reference/android/widget/CursorAdapter.html

于 2012-10-19T12:05:58.607 に答える
1

ドキュメントのnotifyDataSetChanged()をご覧ください。データベースにデータを追加したら、これを呼び出してリストを更新します。

于 2012-10-19T12:06:40.790 に答える
1

データベース アダプタでデータベース データをフックするには、LoaderManager を使用する必要があります。それはあなたに2つの利点をもたらします -

  1. データをフェッチするために UI スレッドで実行されないため、表示に遅延はありません。
  2. データベースで何かが変更されると、データが自動的に更新されます。

詳細はこちら - https://developer.android.com/reference/android/app/LoaderManager.html

于 2012-10-19T12:05:32.490 に答える
1

あなたがする必要がある2つのタスク:

  1. データベースにデータを追加する
  2. データが正常に挿入されたことを確認してから、同じデータをアダプタに追加します。アダプターでデータを変更した後は、 notifyDataSetChanged()を呼び出すことを忘れないでください。
于 2012-10-19T12:08:35.410 に答える