1. ホーム
  2. Android

Android SpinnerのsetSelectionとonItemSelectedイベントのトリガー順について

2022-02-17 21:15:13

Androidの開発において。setSelectionをしたいが、onItemSelectedイベントを発生させたくないという状況に遭遇することがあります。

一般的な考え方は、まずリスナーを削除し、変更が終わった後にリスナーを追加することです。

しかし、実際には setSelection(int) メソッドはメインスレッドのメッセージキューにポストされてしまうので、実際に値が変わるのはリスナーを追加した後です(メッセージキューに入れた場合、実行される頃には現在の関数は終了しているはずです)。このとき、setSelection(int, boolean)メソッドを使えば、すぐにUIが変更されます。





setSelection(int) と setSelection(int, boolean) の違いに注目です。





参考

http://bbs.csdn.net/topics/390515347?page=1