Reputation: 2594
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);
}
........
}
Upvotes: 2
Views: 2912
Reputation: 3407
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.
Upvotes: 1
Reputation: 314
You might use lambda expression if you are developing in Java 8:
Collections.sort(membersArrayList,
(m1, m2) -> (int) (m2.getMemberID() - m1.getMemberID()));
Upvotes: 1
Reputation: 1691
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;
}
}
});
Upvotes: 2