У меня есть крушение с различными Спиннерами в нем. Чтобы эти прядильщики отображали начальное (не выбираемое) значение, я использую настраиваемый arrayAdapter (SpinnerHintAdapter). Единственное, что делает этот класс, это переопределить getCount(), поэтому последний элемент массива выбора не отображается, здесь хранится начальное значение.
Все это прекрасно работает, пока вы не вращаете устройство, поэтому по умолчанию они вращаются по последнему нормальному значению списка, хотя класс Fragment по-прежнему считает, что он установлен на начальном значении.
Кто-нибудь подскажет, почему это происходит и/или как решить эту проблему?
Примеры кода:
фрагмент:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_free_top_up, container, false);
Spinner pet = (Spinner) rootView.findViewById(R.id.pet);
SpinnerHintAdapter<CharSequence> petAdapter = SpinnerHintAdapter.createFromResource(getActivity(),
R.array.pet_array, android.R.layout.simple_spinner_item);
petAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
pet.setAdapter(petAdapter);
pet.setSelection(pet.getCount());
return rootView;
}
SpinnerHintAdapter:
@Override
public int getCount() {
int count = super.getCount();
// The last item will be the hint.
return count > 0 ? count - 1 : count;
}
example string-array
<string-array name="pet_array">
<item>Yes</item>
<item>No</item>
<item>(initial value)</item>
</string-array>