Страница 1 из 6
Урок 56. Spinner – выпадающий список
Добавлено: 13 фев 2012, 03:00
damager82
В этом уроке:
- используем Spinner
[url=
http://www.startandroid.ru/ru/uroki/vse ... l:8g1ozf7p]Click here to read this article![/url:8g1ozf7p]
Re: Урок 56. Spinner – выпадающий список
Добавлено: 21 фев 2012, 22:55
OctahedroN
Здравствуйте, у меня к вам назрел ещё один вопрос. Попытался добавить данные из Spinner в базу данных, но программа ругается на то что не видит spinner в методе onclick. Вот кусок кода, если можете, подскажите пожалуйста
String[] opora = {"1", "2", "3", "4"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, opora);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner spinner = (Spinner) findViewById(R.id.Opora);
spinner.setAdapter(adapter);
spinner.setPrompt("Выберите опору");
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(getBaseContext(), "Position = " + position, 1000).show();
}
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
public void onClick(View v) {
ContentValues cv = new ContentValues();
int N = Integer.parseInt(ND.getText().toString());
int X = Integer.parseInt(XD.getText().toString());
int Y = Integer.parseInt(YD.getText().toString());
int Op = Integer.parseInt(spinner.getSelectedItem().toString()); <---- здесь пишет что spinner не сущ.
Log.d(LOG_TAG, "Op = " + Op);
Если я создаю адаптер в методе OnClick то у меня Op всегда равна первому значению, если менять то ничего не происходит. Возможно мне где-то что-то нужно дописать, только я не знаю что =(
Re: Урок 56. Spinner – выпадающий список
Добавлено: 22 фев 2012, 01:25
SoLVeX
И не будет видеть. Если я правильно понял код, то определение переменной spinner происходит в процедуре onCreate. В этой процедуре эта переменная и остается.
Re: Урок 56. Spinner – выпадающий список
Добавлено: 22 фев 2012, 09:50
damager82
SoLVeX прав. Вынесите объявление переменной spinner за пределы метода, в класс:
А вместо
Код: Выделить всё
Spinner spinner = (Spinner) findViewById(R.id.Opora);
оставьте
Код: Выделить всё
spinner = (Spinner) findViewById(R.id.Opora);]
Re: Урок 56. Spinner – выпадающий список
Добавлено: 22 фев 2012, 13:14
OctahedroN
damager82, большое спасибо =)
Re: Урок 56. Spinner – выпадающий список
Добавлено: 26 фев 2012, 17:04
badlog
Здравствуйте! У меня такой вопрос: как создать несколько выпадающих списков spinner, при чем так, чтобы их состав зависел друг от друга?
Например: Первый список определяет состав двух последующих, второй список определяет состав третьего.
Re: Урок 56. Spinner – выпадающий список
Добавлено: 27 фев 2012, 10:29
damager82
badlog писал(а):Здравствуйте! У меня такой вопрос: как создать несколько выпадающих списков spinner, при чем так, чтобы их состав зависел друг от друга?
Например: Первый список определяет состав двух последующих, второй список определяет состав третьего.
Если например spinner2 зависит от spinner1, то для spinner1 добавляете обработчик spinner1.setOnItemSelectedListener. А в нем прописываете создание/изменение и присвоение адаптера для spinner2.
Re: Урок 56. Spinner – выпадающий список
Добавлено: 12 май 2012, 22:25
fend
Здравствуйте!
Такой вопрос: а как создать spinner не на основе статического массива в java-файле, а при помощи <string-array ... ></string-array> в ресурсах (например, string.xml)?
Re: Урок 56. Spinner – выпадающий список
Добавлено: 13 май 2012, 17:37
KamiSempai
Для этого можно использовать функцию getStringArray класса Resources.
Re: Урок 56. Spinner – выпадающий список
Добавлено: 14 май 2012, 23:36
fend
Спасибо.
Не могу разобраться с использованием ресурсов - пытаюсь подключать различные импорты, пользуясь догадками, но даже в ресурсках (Resourses.getStringArray) этот метод не появляется в списке возможных.
Re: Урок 56. Spinner – выпадающий список
Добавлено: 15 май 2012, 10:25
damager82
fend писал(а):Не могу разобраться с использованием ресурсов
Пример кода использования массива в Spinner:
Код: Выделить всё
spinner = (Spinner) findViewById(R.id.mySpinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.my_data, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
Оно?
Re: Урок 56. Spinner – выпадающий список
Добавлено: 15 май 2012, 12:04
KamiSempai
damager82 писал(а):Оно?
Это еще более элегантный способ, чем я предложил
PS: Но если посмотреть внутрь этого метода, увидим использование того же самого Resources:
Код: Выделить всё
public static ArrayAdapter<CharSequence> createFromResource(Context context,
int textArrayResId, int textViewResId) {
CharSequence[] strings = context.getResources().getTextArray(textArrayResId);
return new ArrayAdapter<CharSequence>(context, textViewResId, strings);
}
Re: Урок 56. Spinner – выпадающий список
Добавлено: 03 июл 2012, 12:58
Ullis
Здравствуйте.
Я только не давно начал разбираться с андроидом, поэтому не все понятно пока.
Вопрос: почему событие setOnItemSelectedListener возникает сразу после инициализации приложения, а не непосредственно при "селекте" списка.
Т.е. я хочу, что бы в необходимое текстовое поле попадало значение выбранного мною элемента списка, а оно попадает сразу "item=0" после загрузки приложения.
Спасибо.
Re: Урок 56. Spinner – выпадающий список
Добавлено: 03 июл 2012, 16:59
damager82
Похоже, что этого не избежать. Хотя бы один элемент в спиннер-е всегда должен быть выбран.
В качестве альтернативы можно использовать диалог со списком с одиночным выбором.
Re: Урок 56. Spinner – выпадающий список
Добавлено: 03 июл 2012, 18:29
Ullis
Спасибо, а то я всю голову сломал.
Т.е. получается если есть текстовое поле в которое можно просто написать или вставить значение из списка то нужно делать диалог со списком, "батоном" его открывать и закрывать при "селекте" списка, при этом вставляя значение в текстовое поле. Но возникает вопрос: у списка нет события "клик", а опять возникает событие setOnItemSelectedListener, соответственно до диалога? Хотя я совсем мало знаю.
А есть событие у диалога "закрытие"? Можно тогда при "селекте" закрывать диалог, а при "закрытии" диалога вставлять значение выбранного селекта?
Я понятно излагаю? Нужно почитать доки.
Re: Урок 56. Spinner – выпадающий список
Добавлено: 04 июл 2012, 11:02
KamiSempai
Ullis писал(а):... у списка нет события "клик" ...
Есть, он называется onItemClickListener.
Re: Урок 56. Spinner – выпадающий список
Добавлено: 04 июл 2012, 17:48
Ullis
KamiSempai писал(а):Есть, он называется onItemClickListener.
Простите, но разве
здесь не написано:
setOnItemClickListener(AdapterView.OnItemClickListener l)
A spinner does not support item click events.
Или я чего-то не понимаю.
Re: Урок 56. Spinner – выпадающий список
Добавлено: 05 июл 2012, 13:25
KamiSempai
Ullis писал(а):Или я чего-то не понимаю.
Все правильно. Это я ошибся. Глаза зацепились за слово "Список".
Re: Урок 56. Spinner – выпадающий список
Добавлено: 05 июл 2012, 14:08
damager82
Ullis писал(а):А есть событие у диалога "закрытие"? Можно тогда при "селекте" закрывать диалог, а при "закрытии" диалога вставлять значение выбранного селекта?
По диалогам я проделал немалую работу. Все изложил в уроках 58-67 на
http://startandroid.ru/. Там есть и пример списка с одиночным выбором.
Re: Урок 56. Spinner – выпадающий список
Добавлено: 06 июл 2012, 12:57
Ullis
Спасибо Вам большое, если использовать диалог, то думаю тогда нет смысла использовать Spinner, проще в нем сделать ListView.