按列表项排序的Android ListView

时间:2011-07-06 22:24:37

标签: android

我使用带有android.R.layout.simple_list_item_multiple_choice的ListView作为列表项。我想对列表顶部的列表(可能是列表组)进行排序。我查看了比较器,但它只允许我按列表的条目名称对列表进行排序。 怎么可能以一种很好的方式完成?

1 个答案:

答案 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和比较器的实例填充它们。 之后告诉适配器你改变了他的内容