0

我想Listview根据我的应用程序中的一些值对我进行排序,但我不知道如何编码。我研究并发现人们正在使用比较器和集合来对数组列表进行排序。基本上,我想按一些状态进行排序,例如接受或拒绝。该值存储在TAG_ACCEPT_REJECT并显示在 中R.id.applicantStatus

下面是我的代码:

adapter = new SimpleAdapter(
                ApplicantJobStatusActivity.this,
                applicantsList,
                R.layout.list_applicant_status,
                new String[] { TAG_UID, TAG_NAME,
                               TAG_ACCEPT_REJECT,
                               TAG_ACCEPT_REJECT_DATETIME },
                new int[] { R.id.applicantUid,
                            R.id.applicantName,
                            R.id.applicantStatus,
                            R.id.accept_reject_datetime });
setListAdapter(adapter);

我想知道如何以及在何处使用比较器和集合放置排序代码以重新排列我的ListView.

4

2 回答 2

3

您应该在将列表applicantsList传递给适配器之前对其进行排序。然后,您可以使用该Collections.sort方法。像这样的东西:

Collections.sort(applicantsList, new Comparator<T extends Map<String, ?>> {
  public int compare(T map1, T map2) {
    if (!map1.has(TAG_ACCEPT_REJECT)) return -1;
    if (!map2.has(TAG_ACCEPT_REJECT)) return 1;

    // Assumes the objects you store in the map are comparables
    return map1.get(TAG_ACCEPT_REJECT).compareTo(map2.get(TAG_ACCEPT_REJECT));
  }
});
于 2012-10-22T13:18:48.993 回答
1

-在将 分配给Arrays.sort() 之前使用。ArrayAdapter

-或者你可以使用Collections.sort(Collection c)接口Comparable

-Collections.sort(Collection c, Comparator cp)使用Comparator Interface, with Colletions like ArrayListbefore assigning it to the适配器`。

/////////////////////编辑部分//////////////////// ///

请参阅下面的链接,其中包含使用各种技术对 Array、ArrayList 等进行排序的所有示例。

http://www.mkyong.com/java/java-object-sorting-example-comparable-and-comparator/

于 2012-10-22T13:25:03.410 回答