项目添加后对数组适配器排序

时间:2013-03-02 16:12:13

标签: android sorting adapter

如何强制数组适配器对自身进行排序。 notifyDataSetChanged不起作用。我想要做的是将一个项添加到数组adpater,然后强制它再次排序。 这是我的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();

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

将传递的sort()添加到add()的内部列表后,您需要在note方法中调用noteItems

或者您可以在致电notifyDataSetChanged()之前在super.notifyDataSetChanged()内拨打电话。

我认为后者甚至更好,因为这样您每次批量时都不会进行排序 - add()项。

答案 1 :(得分:0)

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

sort()已经调用notifyDataSetChanged()