当たり前の事なのかもしれないけど、自分用のメモ
ListViewで、フィルタとソートを実行する時、以下のようなコードを書いたのです。これは正常に動作しません。
フィルタは行われますが、ソートが行われません。
ListView listView = (省略します)
SampleAdapteradapter = (SampleAdapter)listView.getAdapter();
adapter.getFilter().filter("filter文字列");//フィルタ実行
adapter.sort();//ソート処理。引数は省略しています。
理由は簡単で、Filterは非同期で動作するためです。
sortを行った後、しばらくたってからfilterが動作します。
android.widget.Filterクラスのfilterメソッドに、Handlerを生成するコードがありました。
しかし、sortのコードはHandlerを使用していないため、同期的に動作します。
従って、filterとsortを実行したければ、以下の2つのパターンになると思います。
1.sortを実行してからfilterを実行する。
2.filterの中にsortも含めてしまう
こんな感じになると思います。
意外に時間をとっちゃったので、メモしておきました。