我使用带有android.R.layout.simple_list_item_multiple_choice的ListView作为列表项。我想对列表顶部的列表(可能是列表组)进行排序。我查看了比较器,但它只允许我按列表的条目名称对列表进行排序。 怎么可能以一种很好的方式完成?
答案 0 :(得分:0)
比较器只能比较字符串并不是真的。你可以自己扩展Comparator并比较你的对象。因此,如果您的对象是“较小”则返回-1,如果它是“更大”则返回1,如果等于0。 我想你有一个简单的对象代表你的列的一行,比如ListItem。 然后你写
public class ListItemComparator extends Comparator{
public int compare(ListItem1 l1, ListItem2 l2){
if(l1.isChecked && l2.isChecked) return 0;
if(l1.isChecked && !l2.isChecked) return 1;
else return -1;
//or any other comparation you like
}
public boolean equals(ListItem1 l1, ListItem2 l2){
//return true if compare returns 0
return l1.isChecked && l2.isChecked;
}
}
然后,您可以使用
对列表进行排序Collections.sort(List<ListItem> items, Comparator comparator)
功能并用ListItems和比较器的实例填充它们。 之后告诉适配器你改变了他的内容