1

配列アダプターを強制的にソートするにはどうすればよいですか。notifyDataSetChanged は機能しません。私がやりたいことは、アイテムを配列アダプターに追加してから、強制的に再度ソートすることです。これは私のアダプターです:

    this.noteListViewAdapter = new NoteListViewAdapter(this.GetActivityContext(), R.layout.list_view_note_item, noteItems);

    // sorting
    this.noteListViewAdapter.sort(new Comparator<NoteItem>()
    {
        @Override
        public int compare(NoteItem item1, NoteItem item2)
        {
            // TODO Auto-generated method stub
            return item2.CreationDate.compareTo(item1.CreationDate);
        };
    });

それは正常に動作します。アイテムがソートされます。しかし、新しいアイテムを追加したいときに、並べ替えが機能しません。それも呼ばれていません。これは私が新しいアイテムを追加する方法です:

    this.noteListViewAdapter.add(note);
    this.noteListViewAdapter.notifyDataSetChanged();

ご協力ありがとうございました

4

2 に答える 2

2

の内部リストに渡されたものを追加した後sort()、メソッド内で呼び出す必要があります。add()notenoteItems

notifyDataSetChanged()または、を呼び出す前に内部で呼び出すこともできますsuper.notifyDataSetChanged()

add()後者の方が良いと思います。この方法では、アイテムをバッチ処理するたびに並べ替える必要がないからです。

于 2013-03-02T16:17:05.260 に答える
0

notifyDataSetChanged() 内で sort() を呼び出さないでください。:)

sort() はすでに notifyDataSetChanged() を呼び出しています

于 2015-03-16T22:40:25.533 に答える