1

異なるクラスのベースアダプタを使用して、データベースからの複数のデータを表示するリストビューがあります。データベースにアイテムを削除または追加するたびにリストビューを更新したい。

これが私のコードですが、リストビューが更新されていません。どこに置くべきか教えてくださいnotifyDataSetChanged()

BaseAdapter ad = ((orderadapter)list.getAdapter());
ad.notifyDataSetChanged();

ありがとう。

4

2 に答える 2

1

私は同じ問題に直面していますが、以下のコードを使用して解決しました。

listView.post(new Runnable() {
        public void run() {
        adpater.notifyDataSetChanged();
        }
    });
于 2012-10-11T13:59:36.177 に答える
1

まず、アダプターをグローバル変数として宣言します。

       public ListAdapter adapter = null;

次に、リストビュー(アイテムを配置する必要がある)を onCreate() メソッドで初期化します。このリストビューのレイアウトは、xml ファイルで定義されています。

       listView = (ListView)findViewById(R.id.myList);

ここで、配列リストに表示するすべての値を取得し、この配列リストでアダプターを初期化します (他のデータ ストレージ手法も使用できます)。

       adapter = new ListAdapter(availableMessageNotifications,MessageNotificationActivity.this);
       listView.setAdapter(adapter);
       listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

次に、リストのすべての項目に onItemClickListener を設定します。

      OnItemClickListener listener = new OnItemClickListener (){
        @Override
        public void onItemClick(AdapterView<?> adapter, View view, int position,long id) {
      //your code for an item clicked.
     }
     listView.setOnItemClickListener (listener);

これがお役に立てば幸いです。

UI スレッドから notifyDataSetChanged() を呼び出す必要があります。

       yourList.remove(position);
        runOnUiThread(new Runnable() {
            public void run() {
                yourAdapter.notifyDataSetChanged();
            }
        });
于 2012-06-23T08:45:52.727 に答える