Комбобокс в 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);
}
});