2011-07-06 81 views
0

我使用ListView和android.R.layout.simple_list_item_multiple_choice作爲列表項。我想排序列表(也許組列表),檢查項目位於列表的頂部。我查看了Comparator,但它只允許我按列表的條目名稱對列表進行排序。 這怎麼可能以好方式完成?Android ListView按檢查項排序

回答

0

比較器只能比較字符串是不正確的。你可以自己擴展比較器並比較你的對象。所以如果你的對象是「更小」返回-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中和你比較的一個實例填充。 之後告訴適配器,您更改了他的內容