Спиннер переключателя Android не появляется сразу

Я понял, как показать некоторый текст после выбора элемента из счетчика с регистром переключения. Но теперь текст не появляется сразу, если я выбираю элемент.

Когда я выбираю элемент в первый раз, «spotinfo» остается пустым. Когда я выбираю второй элемент, он добавляет текст в «spotinfo».

Может кто-нибудь сказать, почему текст не появляется сразу?

public class InputItemSelectedListener implements OnItemSelectedListener {
   public void onItemSelected(AdapterView<?> parent, View view, int pos , long id) {
          spotInfo.loadData("", "text/html", "utf-8");
          String data = "<div style=\"color: #949494;\">";

          switch(parent.getSelectedItemPosition()){
            case 0:
                data += getString(R.string.Panoramaterras);
                break;
            case 1:
                data += getString(R.string.about);
                break;
          } 

          data += "</div>";
          spotInfo.loadData(data, "text/html", "utf-8");
    }

    public void onNothingSelected(AdapterView<?> parent) {
      // Do nothing.
    }

}


person Nick    schedule 30.08.2011    source источник


Ответы (1)


Какой пункт вы выбираете в первую очередь? Если вы выбираете уже выбранный элемент, вместо этого вызывается onNothingSelected.

Хотя вы, возможно, ничего не выбрали вручную, Spinner вызывает onItemSelected после инициализации. Если вы не хотите, чтобы такое поведение происходило, вы должны обернуть свой код логической проверкой, которая устанавливается после первой инициализации счетчика.

boolean hasSpinnerLoaded = false;

public class InputItemSelectedListener implements OnItemSelectedListener {
    public void onItemSelected(...) {
        if (hasSpinnerLoaded) {
            //do your switch statement here
        }
        else
            hasSpinnerLoaded = true;
    }
}
person hooked82    schedule 30.08.2011