2011-07-06 10 views
0

リスト項目としてandroid.R.layout.simple_list_item_multiple_choiceを使用したListViewを使用します。私はリストをソートしたい(そしておそらくリストをグループ化する)、チェックされたアイテムがリストの一番上に来るようにしたい。私はComparatorを見ましたが、リストのエントリ名でリストをソートすることしかできません。 これはどうやってうまくいくのでしょうか?Android ListViewはチェック項目でソートされています

答えて

0

コンパレータが文字列を比較することしかできないということは真実ではありません。 Comparatorを自分だけ拡張し、オブジェクトを比較することもできます。したがって、あなたのオブジェクトが "小さい"場合は-1を返し、大きい場合は1を返します。 リストの行を表す単純なオブジェクトを持っていると思いますが、ListItemと言うことができます。 はその後、あなたはあなたが、その後

Collections.sort(List<ListItem> items, Comparator comparator) 

機能を使用してリストをソートし、あなたの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; 
    } 
} 

を書きます。その後 アダプターにあなたのコンテンツを変更したことを伝えてください

関連する問題