[Android] Adapterのソート
ArrayAdapterのソート方法について。
ArrayAdapterでのソートにはsortメソッドを使用します。
引数にはComparatorオブジェクトを渡します。
ソート処理では項目1つ1つに対して比較処理を行いますが、その比較処理の実体をComparatorで実装することになります。
Comparatorはインターフェースなので、Comparatorを継承したクラスで実体を定義します。
まず、Comparatorを継承した比較用クラスを作ります。
単純に名前でソートするだけならこんな感じ。
private class FileComparator implements Comparator<FileInfo>
{
@Override
public int compare(FileInfo lhs, FileInfo rhs)
{
String name1 = lhs.getName();
String name2 = rhs.getName();
return name1.compareTo(name2);
}
}
で、こんな感じで呼び出します。
ArrayAdapterに登録されているオブジェクトが名前でソートされます。
fileAdapter.addAll(files);
fileAdapter.sort(new FileComparator());
なお、sortメソッドは内部でCollections.sortメソッドを呼び出しているだけなので、予めListにソートを掛けたものをArrayAdapterへ追加するのと大して変わりません。
そこら辺の実装方法はお好みで。