我已根据本教程创建了一个列表视图:
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;
}
现在显示联系人的姓名,但不会对其进行排序。我该如何排序?
请帮忙! 提前谢谢!
答案 0 :(得分:4)
让我们来看看这个宣言。
List<Model> list = new ArrayList<Model>();
这是一个ArrayList
对象,参数为Model
。现在,在您创建的Model
类中,您只需使用Comparable
接口即可。要执行此操作,请添加:
implements Comparable<Model>
到Model
类标题的末尾。
然后,您将被迫为名为compareTo
的方法添加实现。这就是你比较事物的方式。
添加此实现后,您可以调用Collections.sort()
,并将ArrayList
对象列表传递给它。这将为您排序列表。
稍微深入一点我认为
所以,要做的第一件事就是去你的Model
课程,目前这个课程的标题如下:
public class Model
您想要做的是将其更改为:
public class Model implements Comparable<Model>
这是什么意思?
这意味着您已同意为Comparable
接口提供代码。您现在需要在compareTo
课程中编写方法Model
。类似的东西:
@Override
public int compareTo(Object arg0) {
// At this point, you put your comparison code in.
}
您的比较代码
如果要按字母顺序对它们进行排序,可以使用compareTo
对象中存在的String
方法。首先,您需要将arg0
转换为可以使用的String
对象:
String otherName = ((Member)arg0).getName();
然后您只需返回String compareTo
方法的值:
return otherName.compareTo(this.name);
答案 1 :(得分:0)
在返回列表之前添加Collections.sort(列表)。并检查类Model是否实现了Comparable。如果没有,您可以使用Collections.sort(列表,比较器)