如何在listview中对手机通讯录进行排序?
我已经创建了一个基于本教程列表视图:如何在listview中对手机通讯录进行排序?
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
对象,paramaterized键入Model
。现在,在您创建的Model
类中,您可以简单地使用Comparable
接口。要做到这一点,你加:
implements Comparable<Model>
您Model
类标题的末尾。
然后您将被迫添加一个名为compareTo
的方法的实现。这只是你如何比较的东西。
当您添加此实现时,您可以拨打Collections.sort()
,并将其传递给ArrayList
对象列表。这将为您排序列表。
有一点更深入,我认为
所以,要做的第一件事就是去你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();
然后,你可以简单地返回字符串compareTo
方法的价值:
return otherName.compareTo(this.name);
在返回列表之前添加Collections.sort(list)。并检查类模型是否实现了Comparable。如果没有,可以使用Collections.sort(列表,比较器)
我做到了。对于Collections.sort(列表),它表示“类型安全性:类型集合” – Ereka 2013-04-28 12:29:00
“的泛型方法排序(列表)的未检查的调用排序(列表)。我的问题应该真的给你一步一步的指导。紧随其后! :) –
christopher
2013-04-28 12:31:24
您应该实施可比较的,而不仅仅是原始类型。 –
hd1
2013-04-28 12:40:57