[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へ追加するのと大して変わりません。
そこら辺の実装方法はお好みで。