Combobox в Android - PullRequest
       2

Combobox в Android

14 голосов
/ 14 марта 2011

Мне нужно что-то вроде комбобокса в доступе в Android, я хочу выбрать клиента по имени, но на заднем плане должен быть выбран идентификатор.как сделать?

Ответы [ 2 ]

25 голосов
/ 14 марта 2011

В андроид комбинированные списки называются прядильщиками. Тем не менее, gnugu опубликовал в своем блоге свою собственную реализацию комбинированного списка. http://www.gnugu.com/node/57

Простой пример прядильщика: Во-первых, отредактируйте свой XML-код с помощью чего-то вроде

Spinner android:id="@+id/Spinner01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

Ваш код Java должен включать что-то вроде этого, параметры очень интуитивно понятны. Если вы используете Eclipse, он предложит вам несколько вариантов

public class SpinnerExample extends Activity {
    private String array_spinner[];
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // Here come all the options that you wish to show depending on the
        // size of the array.
        array_spinner=new String[5];
        array_spinner[0]="option 1";
        array_spinner[1]="option 2";
        array_spinner[2]="option 3";
        array_spinner[3]="option 4";
        array_spinner[4]="option 5";
        Spinner s = (Spinner) findViewById(R.id.Spinner01);
        ArrayAdapter adapter = new ArrayAdapter(this,
        android.R.layout.simple_spinner_item, array_spinner);
        s.setAdapter(adapter);
    }
}
2 голосов
/ 23 июня 2012

Альтернативное решение для необходимости связать идентификатор клиента с выбранным элементом.

Чтобы иметь простой селектор с текстом, который вы вызываете, используйте ресурсы массива. Установите Spinner в XML

<Spinner android:id="@+id/spinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:entries="@array/colors"/>

Если вам нужно больше данных, связанных с вращателем, вы можете использовать объекты для заполнения счетчика.Функциональность ArrayAdapter по умолчанию заключается в вызове toString () для любого объекта и передаче его в представление.

if (item instanceof CharSequence) {
    text.setText((CharSequence)item);
} else {
    text.setText(item.toString());
}

Вы можете реализовать toString () в своем объекте, и он будет правильно отображаться в счетчике.Затем, чтобы получить данные из массива, вы можете добавить обработчик в ItemSelected и получить объект обратно из начального массива или ArrayAdapter.

ArrayAdapter adapter = new ArrayAdapter(activity, android.R.layout.simple_spinner_item, arrayOfObjects);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
    {
        Log.d(arrayOfObjects[position]._id);
    }

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...