Android Spinner, как установить значение выбора без выбора

У меня есть счетчик, который берет данные с сервера, я хочу установить первое значение выбора, например «Установить город». Я заправляю спиннер так:

s_city = (Spinner) findViewById(R.id.s_city);
        ArrayAdapter<String> cityAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, Data.cities);
        cityAdapter
                .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        s_city.setAdapter(cityAdapter);

Я хочу, чтобы первый выбор был set city, я знаю, что могу добавить его в первый или Data.cities, но я спрашиваю, есть ли стандартный способ для Android.


person user user    schedule 03.02.2013    source источник
comment
вы всегда можете поместить в свой адаптер дополнительную запись, которая не представляет выбора, и сделать ее начальным выбранным элементом в Spinner.   -  person Pragnani    schedule 03.02.2013
comment
как пожалуйста? дал бы мне пример кода   -  person user user    schedule 03.02.2013
comment
protected static String[] cities = new String[] {""}; это data.cities, я заливаю с сервера   -  person user user    schedule 03.02.2013


Ответы (3)


Я бы просто добавил «Установить город» в качестве первого элемента счетчика. В ArrayAdapter есть метод вставки http://developer.android.com/reference/android/widget/ArrayAdapter.html#insert(T, int). Вы можете добавить свой «Установить город» в качестве первого элемента.

person Kristopher    schedule 03.02.2013
comment
Праньяни говорит, что есть способ - person user user; 03.02.2013

Добавьте дополнительный элемент «Установить город» в начало списка, а затем сделайте следующее:

SpinnerAdapter adapter = new ArrayAdapter<String>(getActivity(),
            R.layout.list_item, list) {
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = super.getView(position, convertView, parent);
            if (position == 0) {
                ((TextView) v.findViewById(android.R.id.text1)).setText("");
                ((TextView) v.findViewById(android.R.id.text1)).setHint("Set City");
            }
            return v;
        }
    };

Также не забывайте специально обрабатывать позицию 0 при обработке onItemSelected.

person Leo K    schedule 08.04.2013

вы можете установить вот так
Spinner.setSelection(Adapter.NO_SELECTION, false);

посмотри это

Как выбрать первый элемент счетчик в тесте

person Zakir Pervez    schedule 05.04.2017