【问题标题】:Sort an ArrayList based on Integer基于整数对 ArrayList 进行排序
【发布时间】:2015-10-06 20:29:31
【问题描述】:

当我将数据提取到 ListView 时,以相同的顺序获取数据,但是如果我想根据 MemberID 对数据进行排序,但我想在顶部显示最近的数据

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

    }

    ........
}

【问题讨论】:

标签: java android sorting arraylist


【解决方案1】:

使用 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;
        }
    }
});

【讨论】:

    【解决方案2】:

    如果您使用 Java 8 进行开发,您可能会使用 lambda 表达式:

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

    【讨论】:

      【解决方案3】:

      这应该可行:

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

      注意:您应该以单数形式命名类 Members,因为它是一个 Member 的表示。

      编辑:排序顺序取决于您如何设置http://developer.android.com/reference/android/widget/AbsListView.html#setStackFromBottom(boolean)

      当 stack from bottom 设置为 true 时,列表填充其内容 从视图底部开始。

      【讨论】:

      猜你喜欢
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2011-05-03
      • 2018-04-21
      • 2011-12-17
      • 1970-01-01
      相关资源
      最近更新 更多