2013-03-02 29 views
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(); 

謝謝您的幫助

+0

排序再次notifyDataSetChanged之前之後添加()(); – wtsang02 2013-03-02 16:15:54

回答

2

您需要添加傳遞notenoteItems內部列表之後調用sort()add()方法內。

或者你可以在致電super.notifyDataSetChanged()之前致電notifyDataSetChanged()

我認爲後者更好,因爲這種方式在每次批次處理時都不會進行排序。

+0

謝謝,它工作:) – Harlsten 2013-03-02 16:34:33

0

不要在notifyDataSetChanged()裏面調用sort(),否則你會得到一個StackOverFlow! :)

排序()調用已經notifyDataSetChanged()