0

セクションリストビューhttp://lalit3686.blogspot.com/2012/05/sectionadapter.htmlを使用して、ここから例に従います。

しかし、どうすれば実装できadapter.notifyDataSetChanged()ますか?

リストビューデータを更新するためのリスナーの追加:

mListView.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            Toast.makeText(SectionAdapterActivity.this, ""+position+"", Toast.LENGTH_SHORT).show();
            test();

        }
    });

値の変更/更新のみ(テストのみ)の新しい関数を追加しています:

public void test()
{
    hashMap.clear();

    for (int i = 0; i < 3; i++) {
        hashMap.put("Mail", String.valueOf(1100 + i), 1);
    }

    for (int j = 0; j < 4; j++) {
        hashMap.put("Case", String.valueOf(2100 + j), 15);
    }
    for (int j = 0; j < 5; j++) {
        hashMap.put("File", String.valueOf(10000 + j), 20);
    }

    mListView.invalidate();
    mListView.invalidateViews();
    adapter.notifyDataSetChanged(); 

    Log.e("dada", hashMap.toString());
}}

うまくいかないようです、誰か助けてもらえますか?

4

2 に答える 2

1
  1. にSamehashmapadapterオブジェクトを使用していることを確認し、オブジェクトの作成時にListViewそのオブジェクトが使用されていることを確認します。hashmapadapter
  2. adapter.notifyDatasetChanged()が呼び出されていることを確認し、そこにログを置きます
  3. notifyDatasetChanged()を呼び出した後、HashMapオブジェクトの値をLogに出力し、ListViewとLogの項目が同じかどうかを確認します
  4. の効果は、HashMapのデータが変更された場合にのみnotifyDatasetChanged()表示されます。データが以前のままである場合、呼び出されたかどうかを判断することはできません。
  5. あなたのコードを見ると、コードのこの部分には問題がないと思います。
于 2012-06-28T13:48:29.507 に答える
0

notifyDataSetChange()を呼び出して何を達成しようとしているのか正確にはわかりません。

このメソッドは、アダプターによって使用されているロジック・データ収集/データベースを、既に作成された後で変更した場合にのみ有効になります。この状況では、新しいデータでリストが更新されます

それがあなたがやりたいことなら、それを使うために-あなたがする必要があるのは簡単です:ただ電話してください:

adapter.notifyDataSetChanged();

以上です :)。他には何もありません。

于 2012-06-28T13:24:29.523 に答える