0

Возможно ли установить подсказку для Spinner в Android

9

Описание проблемы:

Я пытаюсь создать выпадающий список (Spinner) в Android с подсказкой, аналогичной подсказке, используемой в полях ввода. Я знаю, что можно использовать prompt, который отображает заголовок, но он оставляет поле спиннера пустым до тех пор, пока пользователь не кликнет по нему. В данный момент моя реализация выглядит довольно грубо: я добавляю в массив спиннера фиктивный элемент, который является текстом вопроса, и в конце проверяю, чтобы значение спиннера не совпадало с этой строкой.

Возникает вопрос: есть ли более чистый и лучший способ реализовать подобную функциональность?

Заранее спасибо!

1 ответ(ов)

1

Вот решение, которое, возможно, немного проще кода Рави Вьяса (спасибо за вдохновение!):

ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item) {

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = super.getView(position, convertView, parent);
        if (position == getCount()) {
            ((TextView)v.findViewById(android.R.id.text1)).setText("");
            ((TextView)v.findViewById(android.R.id.text1)).setHint(getItem(getCount())); // "Подсказка для отображения"
        }
        return v;
    }       

    @Override
    public int getCount() {
        return super.getCount() - 1; // мы не отображаем последний элемент. Он используется как подсказка.
    }
};

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapter.add("Элемент 1");
adapter.add("Элемент 2");
adapter.add("Подсказка для отображения");

spinner.setAdapter(adapter);
spinner.setSelection(adapter.getCount()); // отображаем подсказку

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

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь