Комбобокс в Android

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

Ответы

Ответ 1

В комбобоксах android называются spinner. Тем не менее, гнугу опубликовал в своем блоге собственную реализацию combobox. 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

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

Чтобы иметь простой селектор с текстом, который вы вызываете, используйте ресурсы массива Настройка 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 и вернуть объект из массива seed или 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);
    }

});