Как показать собственное представление в виджете Spinner вместо текстового представления?

У меня есть выбор для некоторых элементов с помощью виджета spinner. В данный момент счетчик загрузит простое текстовое представление и покажет имя элемента.
Можно ли определить собственное представление для отображения внутри строки счетчика? Я подозреваю, что это похоже на пользовательскую строку списка.

Я просто хочу показать отдельный значок слева от текста счетчика для каждого элемента в списке.


person Janusz    schedule 16.03.2010    source источник


Ответы (2)


Да, вы можете это сделать - как вы, возможно, знаете, Spinner является типом AdapterView, что означает, что вы можете адаптировать свои собственные данные для отображения в таком View.

Подход очень похож на подход с ListView. Выдержка из АпиДемос:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, INTERPOLATORS);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s.setAdapter(adapter);

Вы можете определить свой собственный макет и передать его подклассу SpinnerAdapter, который вы используете.

person Dimitar Dimitrov    schedule 16.03.2010

Да, это очень легко.

Главное, определить TextView как корневой элемент в файле макета.
Сделайте, как показано ниже:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, INTERPOLATORS);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s.setAdapter(adapter);


simple_spinner_dropdown_item.xml файл :

<?xml version="1.0" encoding="utf-8"?>
<TextView>
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="50px"
    android:textColor="#000000"
    android:textSize="20px"
    android:gravity="center_vertical" >
</TextView>
person Vijay Kumar Soni    schedule 25.03.2011
comment
Что делать, если вы хотите иметь несколько TextView в своем счетчике? Как Google в приложении Gmail? - person Tim van Dalen; 25.05.2012