LoginSignup
0
0

More than 5 years have passed since last update.

AndroidのListViewのFilterは非同期で動作する。sortは同期する

Posted at

当たり前の事なのかもしれないけど、自分用のメモ

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も含めてしまう

こんな感じになると思います。

意外に時間をとっちゃったので、メモしておきました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0