1

如何强制数组适配器自行排序。notifyDataSetChanged 不起作用。我想要做的是向数组 adpater 添加一个项目,然后强制它再次排序。这是我的适配器:

    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()传递note的内容添加到noteItems.

或者你可以notifyDataSetChanged()在调用之前调用它super.notifyDataSetChanged()

我认为后者更好,因为这样你在批处理add()项目时不会每次都排序。

于 2013-03-02T16:17:05.260 回答
0

不要在 notifyDataSetChanged() 中调用 sort() ,否则你会得到一个 StackOverFlow !:)

sort() 已经调用 notifyDataSetChanged()

于 2015-03-16T22:40:25.533 回答