java-如何在列表视图中对电话联系人进行排序?

我已经根据本教程创建了一个列表视图:

http://www.vogella.com/articles/AndroidListView/article.html

在该链接中,我已经实现了

13>在ListView中选择多个项目

我的列表视图运行正常.我通过使用以下代码用电话联系人填充列表视图来定制列表视图:

private List<Model> getModel()        
{                  
    List<Model> list = new ArrayList<Model>();    
    ContentResolver cr = getContentResolver();
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
    if (cur.getCount() > 0)
    {
         while (cur.moveToNext())
         {
              String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
              String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
               if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
               {
                    // This inner cursor is for contacts that have multiple numbers.
                    Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] { id }, null);
                    while (pCur.moveToNext())
                    {
                         list.add(get(name));
                    }
                    pCur.close();
               }
         }
    }
    cur.close();
    return list;
}

现在,将显示联系人的姓名,但不会对其进行排序.我该如何分类?

请帮助!
提前致谢!

解决方法:

让我们看一下这个声明.

List<Model> list = new ArrayList<Model>();    

这是一个ArrayList对象,已参数化为Model类型.现在,在创建的Model类中,您可以简单地使用Comparable接口.为此,您添加:

implements Comparable<Model>

到Model类标题的末尾.

然后,您将不得不为名为compareTo的方法添加实现.这就是您比较事物的方式.

添加此实现后,可以调用Collections.sort()并将其传递给ArrayList对象list.这将为您排序列表.

 我想再深入一点

因此,首先要做的是转到您的Model类,该类目前具有一个类似于以下内容的标头:

public class Model

您想要做的就是将其更改为:

public class Model implements Comparable<Model>

 这是什么意思?

好的,这意味着您已经同意为Comparable接口提供代码.现在,您需要在Model类中编写一个compareTo方法.就像是:

@Override
public int compareTo(Object arg0) {
   // At this point, you put your comparison code in.
}

 您的比较码

如果要按字母顺序对它们进行排序,则可以使用String对象中存在的compareTo方法.首先,需要将arg0转换为可以使用的String对象:

String otherName = ((Member)arg0).getName();

然后,您可以简单地返回String compareTo方法的值:

return otherName.compareTo(this.name);
上一篇:php-Yii Dataprovider日期排序


下一篇:PHP-按值然后按键对数组进行排序