如何在下拉列表中按字母顺序排序数据

6

我是android领域的新手,想要对我的下拉列表数据进行字母顺序排序。请帮忙。

注意:- 我从网络服务接收数据。

我的代码如下:

        <Spinner
            android:id="@+id/spinnerAtlasContactSignup"
            android:layout_width="200dip"
            android:layout_height="46dp"
            android:layout_below="@+id/editCompanySignup"
            android:layout_marginBottom="60dp"
            android:layout_marginTop="10dp"
            android:background="@drawable/slect_box1x"
            android:ems="10"
            android:padding="10dp"
            android:prompt="@string/atlas_contact" />

 private void initializeSpinner(ArrayList<AtlasContact> atlastContacts) {

    ArrayAdapter<AtlasContact> adapter = new ArrayAdapter<AtlasContact>(this,android.R.layout.simple_spinner_item, atlastContacts);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    // Apply the adapter to the spinner
    spinnerAtlasContact.setAdapter(adapter); 

这里的AtlasContact是一个类,它接受来自Web服务的数据。


这是一个常见问题,请理解由于这个基本问题已经被问了很多次,所以有些人可能会给你点反对票。 - Sam
好的,我会把它删除,因为我是 Android 和 StackOverflow 的新手,所以我不知道。:( - Avinash Kumar Pankaj
现在已经有答案了,所以您不能删除它,但目前还没有人对此进行负评。也许那些人不会注意到。 :) - Sam
4个回答

7
如果您从SQLite数据库中获取值,则可以使用查询按字母顺序对值进行排序,并将它们以排序后的方式放入数组中。
或者,尝试向ArrayList添加数据,然后只需使用Collections类即可为您进行排序。
Collections.sort(SourceArray);

另外,实现Comparable接口并编写compareTo()方法。

1
它显示以下错误:---> 绑定不匹配:类型Collections的通用方法sort(List <T>)不适用于参数(ArrayList <AtlasContact>)。推断类型AtlasContact不是有界参数<T extends Comparable <? super T>>的有效替代品。 - Avinash Kumar Pankaj

6

您只需要对源代码进行排序:

Collections.sort(atlastContacts, new Comparator<AtlasContact>(){
  public int compare(AtlasContact a1, AtlasContact a2) {
    return a1.getName().compareToIgnoreCase(a2.getName());
  }
});

1
尝试使用 Collections.sort(atlastContacts);

0
你查看过文档了吗?在 ArrayAdapter 中有 sort 方法。
你只需要实现自己的 Comparator。我猜应该是这样的:
int compare(String s1, String s2) { return s1.compareTo(s2); }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接