2015-07-17 4 views
2

Когда я выборки данных в ListView, получать данные в той же последовательности, но что, если я хочу, чтобы отсортировать данные, основанные на MemberID, Но я хочу, чтобы показать недавние на вершинеОтсортировать ArrayList на основе Integer

public class AppointmentsActivity extends Activity { 

    ... 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     .... 
     adapter = new MembersAdapter (MembersActivity.this, R.layout.adapter_members, membersArrayList); 

     listView.setAdapter(adapter); 

    } 

    ........ 
} 
+1

по этой ссылке, которую я Думаю, вы можете сделать это с идентификатором участника: http://stackoverflow.com/questions/15149994/android-how-to-sort-data-for-listview – Paul

+1

Я думаю, вы можете найти ответ здесь http://stackoverflow.com/questions/18441846/how-to-sort-a-arraylist-in-java – BNK

+0

возможный дубликат [Java Comparator class для сортировки массивов] (http://stackoverflow.com/questions/5393254/java-comparator-class-to-sort-arrays) – user902383

ответ

1

Вы можете использовать лямбда-выражения, если вы разрабатываете в Java 8:

Collections.sort(membersArrayList, 
    (m1, m2) -> (int) (m2.getMemberID() - m1.getMemberID())); 
0

Это должно работать:

Collections.sort(membersArrayList, new Comparator<Member>(){ 
    public int compare(Member m1, Member m2) { 
     return m1.getMemberID() - m2.getMemberID(); // sort order 
    } 
}); 

Примечание: Вы должны назвать класс Members в единственном числе, так как это представление одного Member.

EDIT: Порядок сортировки зависит от того, как вы установили http://developer.android.com/reference/android/widget/AbsListView.html#setStackFromBottom(boolean)

Когда стек снизу устанавливается истина, список заполняет его содержимое , начиная с нижней части окна.

+0

сортировка требуется в порядке убывания, поэтому вы можете положить m2 .. - m1 – anish

+0

@anish да, это зависит от того, как установлен http://developer.android.com/reference/android/widget/AbsListView.html#setStackFromBottom(boolean) – everyman

2

Использование Collections.sort() для сортировки ArrayList, есть образец:

Collections.sort(membersArrayList, new Comparator<Member>(){ 
    public int compare(Member m1, Member m2) { 
     if (m1.getMemberID() == m2.getMemberID()) { 
      return 0; 
     } else if (m1.getMemberID() > m2.getMemberID()) { 
      return 1; 
     } else { 
      return -1; 
     } 
    } 
}); 
Смежные вопросы