У меня в игре два спиннера, aSpinner
и bSpinner
. Содержимое второго счетчика зависит от выбора первого счетчика. В настоящее время метод onItemSelected устанавливает адаптер для второго счетчика на основе первого счетчика.
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
if (parent == aSpinner) {
buildAdapterForSpinner(bSpinner, getSpinnerOptions(pos));
// Do something
} else if (parent == bSpinner) {
// Do something
}
}
Я хочу программно выбрать опции на обоих этих счетчиках.
@Override
public void onCreate(Bundle savedInstanceState) {
...
aSpinner.setSelection(1, true);
bSpinner.setSelection(1, true);
}
Первый выбор работает просто отлично, но второй выбор не действует. Однако, если я введу задержку в 50 мс перед вторым выбором, все будет вести себя так, как я хочу.
@Override
public void onCreate(Bundle savedInstanceState) {
...
aSpinner.setSelection(1, true);
new Handler().postDelayed(() -> bSpinner.setSelection(1, true), 50);
}
Я подозреваю, что onItemSelected не вызывается сразу после выбора первого счетчика, поэтому второй счетчик не имеет адаптера и не может сделать выбор.
Использование такой жестко заданной задержки кажется хакерским. Есть ли лучший способ для меня сделать оба этих выбора без использования задержки?