3

When i am fetching data into ListView, getting data in a same sequence, but what if i want to sort data based on MemberID, But i want to show recent on top

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);

    }

    ........
}
Oreo
  • 2,586
  • 8
  • 38
  • 63
  • 1
    follow this link i think you can do this with member id : http://stackoverflow.com/questions/15149994/android-how-to-sort-data-for-listview – Paul Jul 17 '15 at 07:29
  • 1
    I think you can find the answer here http://stackoverflow.com/questions/18441846/how-to-sort-an-arraylist-in-java – BNK Jul 17 '15 at 07:35
  • possible duplicate of [Java Comparator class to sort arrays](http://stackoverflow.com/questions/5393254/java-comparator-class-to-sort-arrays) – user902383 Jul 17 '15 at 08:05

3 Answers3

2

Use Collections.sort() for sort ArrayList, there is sample:

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;
        }
    }
});
codeaholicguy
  • 1,671
  • 1
  • 11
  • 18
1

This should work:

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

Note: You should name the class Members in singular, since it is a representation of one Member.

EDIT: Sort order depends on how you set http://developer.android.com/reference/android/widget/AbsListView.html#setStackFromBottom(boolean)

When stack from bottom is set to true, the list fills its content starting from the bottom of the view.

everyman
  • 3,377
  • 1
  • 34
  • 33
  • the sorting is required in descending order, so you can put m2.. - m1 – anish Jul 17 '15 at 07:36
  • @anish yes, it depends on how http://developer.android.com/reference/android/widget/AbsListView.html#setStackFromBottom(boolean) is set – everyman Jul 17 '15 at 07:39
1

You might use lambda expression if you are developing in Java 8:

Collections.sort(membersArrayList, 
     (m1, m2) -> (int) (m2.getMemberID() - m1.getMemberID()));
PythaLye
  • 314
  • 1
  • 8