Sorting ArrayList based on Integer

When I get data in ListView getting data in the same sequence, but what if I want to sort data based on MemberID, But I want to show recently 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


source to share


3 answers


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



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

      

+1


source


Use Collections.sort () to sort ArrayList, there is a 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;
        }
    }
});

      

+2


source


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 must name the class Members

in the singular as it represents one Member

.

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

If the bottom stack is set to true, the list fills its contents from the bottom of the view.

0


source







All Articles