2

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

    }

    ........
}
3

3 Answers 3

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;
        }
    }
});
Sign up to request clarification or add additional context in comments.

Comments

1

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

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

Comments

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.

2 Comments

the sorting is required in descending order, so you can put m2.. - m1
@anish yes, it depends on how developer.android.com/reference/android/widget/… is set

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.