Пользовательский счетчик: setSelection scroll down

У меня есть собственный счетчик У меня есть метка 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;
    }

}