如何强制数组适配器对自身进行排序。 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();
感谢您的帮助
答案 0 :(得分:2)
将传递的sort()
添加到add()
的内部列表后,您需要在note
方法中调用noteItems
。
或者您可以在致电notifyDataSetChanged()
之前在super.notifyDataSetChanged()
内拨打电话。
我认为后者甚至更好,因为这样您每次批量时都不会进行排序 - add()
项。
答案 1 :(得分:0)
不要在notifyDataSetChanged()中调用sort(),否则你会得到一个StackOverFlow! :)
sort()已经调用notifyDataSetChanged()