2013-03-02 3 views
1

как я могу заставить адаптер массива отсортировать себя. 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

разбирайтесь снова после добавления() перед notifyDataSetChanged(); – wtsang02

ответ

2

Вы должны были бы вызвать sort() внутри метода add() после добавления переданной note к внутреннему списку noteItems.

Или вы могли бы назвать это внутри notifyDataSetChanged() перед вызовом super.notifyDataSetChanged().

Я думаю, что последнее еще лучше, так как вы не сортируете каждый раз, когда партия - add() элементов.

+0

Спасибо, это работает :) – Harlsten

0

Не вызывайте sort() внутри notifyDataSetChanged(), или вы получите, угадайте, что, StackOverFlow! :)

сортировки() уже вызывает notifyDataSetChanged()

Смежные вопросы