Android

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

-Android
-,