У меня есть собственный счетчик
У меня есть метка Hint, которая находится в последней позиции моего массива (spinner), поэтому, чтобы отобразить ее, я установил выделение в последнюю позицию, например:
ArrayAdapter myAdapter = new MySpinnerAdapter(this,R.layout.spinner_item,createMyList());
myAdapter.setDropDownViewResource(spinner_item);
mySpinner.setAdapter(subCategoryAdapter);
mySpinner.setSelection(myList.size() - 1);
Он работает отлично, но когда я касаюсь Spinner, чтобы выбрать элемент, прокрутите его, "фокусируя" нижнюю часть счетчика, из-за моего setSelection.
Как я могу сосредоточиться на первом элементе счетчика ИЛИ "прокрутить" вверху?
Спасибо!
Ответ 1
Вы можете добиться этого, расширив Spinner
и переопределяя методы, которые отвечают за настройку и отображают список значений в раскрывающемся списке:
public class CustomSpinner extends Spinner {
private boolean mToggleFlag = true;
public CustomSpinner(Context context, AttributeSet attrs, int defStyle, int mode) {
super(context, attrs, defStyle, mode);
}
public CustomSpinner(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public CustomSpinner(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomSpinner(Context context, int mode) {
super(context, mode);
}
public CustomSpinner(Context context) {
super(context);
}
@Override
public int getSelectedItemPosition() {
if (!mToggleFlag) {
return 0; // Gets to the first element
}
return super.getSelectedItemPosition();
}
@Override
public boolean performClick() {
mToggleFlag = false;
boolean result = super.performClick();
mToggleFlag = true;
return result;
}
}