Java 使用SimpleAdapter进行排序

Java 使用SimpleAdapter进行排序,java,android,eclipse,Java,Android,Eclipse,我想根据我的应用程序中的某个值对我的Listview进行排序,但我不知道如何编码。我研究发现,人们正在使用comparator和collection对arraylist进行排序。基本上,我想按一些状态进行排序,如接受或拒绝。该值存储在TAG\u ACCEPT\u REJECT中,并显示在R.id.applicationstatus中 下面是我的代码: adapter = new SimpleAdapter( ApplicantJobStatusActivity.t

我想根据我的应用程序中的某个值对我的
Listview
进行排序,但我不知道如何编码。我研究发现,人们正在使用comparator和collection对arraylist进行排序。基本上,我想按一些状态进行排序,如接受或拒绝。该值存储在
TAG\u ACCEPT\u REJECT
中,并显示在
R.id.applicationstatus

下面是我的代码:

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

我想知道如何使用comparator和collection将排序代码放置在何处,以重新排列我的
列表视图

在将列表传递给适配器之前,您应该对列表
应用程序列表
进行排序。然后,您可以使用
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));
  }
});
Collections.sort(应用程序列表,新比较器{
公共整数比较(T映射1,T映射2){
如果(!map1.has(TAG_ACCEPT_REJECT))返回-1;
如果(!map2.has(TAG_ACCEPT_REJECT))返回1;
//假设存储在地图中的对象是可比较的
返回map1.get(TAG_ACCEPT_REJECT)。与(map2.get(TAG_ACCEPT_REJECT))进行比较;
}
});

在将列表传递给适配器之前,您应该对列表
应用程序列表进行排序。然后,您可以使用
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));
  }
});
Collections.sort(应用程序列表,新比较器{
公共整数比较(T映射1,T映射2){
如果(!map1.has(TAG_ACCEPT_REJECT))返回-1;
如果(!map2.has(TAG_ACCEPT_REJECT))返回1;
//假设存储在地图中的对象是可比较的
返回map1.get(TAG_ACCEPT_REJECT)。与(map2.get(TAG_ACCEPT_REJECT))进行比较;
}
});

-在将
数组分配给
适配器之前使用
数组.sort()

-或者您可以使用
集合。排序(集合c)
可比
界面

-
集合。使用
比较器接口进行排序(集合c、比较器cp)
,在将其分配给
适配器之前使用类似于
ArrayList
的集合

//编辑部分

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


-在将
数组
分配给
适配器之前使用
数组.sort()

-或者您可以使用
集合。排序(集合c)
可比
界面

-
集合。使用
比较器接口进行排序(集合c、比较器cp)
,在将其分配给
适配器之前使用类似于
ArrayList
的集合

//编辑部分

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


使用此选项对用于初始化SimpleArrayAdapter的数组进行排序,您就可以开始了。另外,您可能需要重新编写ArrayAdapter,以便在每个dataSetChanged()或getView()上实现自动排序。我应该将集合.sort()代码放在何处?在onCreate方法中?我的回答是:“在将列表应用程序列表传递给适配器之前,应该对其进行排序。”。所以在
adapter=new SimpleAdapter(
似乎是个不错的地方。但我使用一个droplist来选择排序。例如,按a-z或z-a排序等。使用此选项来排序用于初始化SimpleArraAdapter的数组,然后您就可以开始了。此外,您可能需要重新编写ArrayAdapter,以实现对每个dataSetChanged()的自动排序或者getView()我应该把这个集合放在哪里。sort()代码放在?onCreate方法内?我的回答是:“你应该在将列表应用程序传递给适配器之前对其进行排序。”。所以在
adapter=new simpledapter(
似乎是个好地方。但是我使用一个droplist来选择排序。例如,按a-z或z-a排序等等