Выбор одного счетчика обновляет адаптер другого счетчика.Могу ли я выбрать оба счетчика программно? - PullRequest
0 голосов
/ 26 октября 2018

У меня в игре два спиннера, 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 не вызывается сразу после выбора первого счетчика, поэтому второй счетчик не имеет адаптера и не может сделать выбор.

Использование такой жестко заданной задержки кажется хакерским. Есть ли лучший способ для меня сделать оба этих выбора без использования задержки?

...