Урок 56. Spinner – выпадающий список
Урок 56. Spinner – выпадающий список
В этом уроке:
- используем Spinner
[url=http://www.startandroid.ru/ru/uroki/vse ... l:8g1ozf7p]Click here to read this article![/url:8g1ozf7p]
- используем Spinner
[url=http://www.startandroid.ru/ru/uroki/vse ... l:8g1ozf7p]Click here to read this article![/url:8g1ozf7p]
Последний раз редактировалось damager82 08 май 2017, 16:02, всего редактировалось 6 раз.
-
- Сообщения: 18
- Зарегистрирован: 15 фев 2012, 20:14
Re: Урок 56. Spinner – выпадающий список
Здравствуйте, у меня к вам назрел ещё один вопрос. Попытался добавить данные из 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 всегда равна первому значению, если менять то ничего не происходит. Возможно мне где-то что-то нужно дописать, только я не знаю что =(
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 – выпадающий список
И не будет видеть. Если я правильно понял код, то определение переменной spinner происходит в процедуре onCreate. В этой процедуре эта переменная и остается.
Re: Урок 56. Spinner – выпадающий список
SoLVeX прав. Вынесите объявление переменной spinner за пределы метода, в класс:
А вместо
оставьте
Код: Выделить всё
Spinner spinner;
Код: Выделить всё
Spinner spinner = (Spinner) findViewById(R.id.Opora);
Код: Выделить всё
spinner = (Spinner) findViewById(R.id.Opora);]
-
- Сообщения: 18
- Зарегистрирован: 15 фев 2012, 20:14
Re: Урок 56. Spinner – выпадающий список
damager82, большое спасибо =)
Re: Урок 56. Spinner – выпадающий список
Здравствуйте! У меня такой вопрос: как создать несколько выпадающих списков spinner, при чем так, чтобы их состав зависел друг от друга?
Например: Первый список определяет состав двух последующих, второй список определяет состав третьего.
Например: Первый список определяет состав двух последующих, второй список определяет состав третьего.
Re: Урок 56. Spinner – выпадающий список
Если например spinner2 зависит от spinner1, то для spinner1 добавляете обработчик spinner1.setOnItemSelectedListener. А в нем прописываете создание/изменение и присвоение адаптера для spinner2.badlog писал(а):Здравствуйте! У меня такой вопрос: как создать несколько выпадающих списков spinner, при чем так, чтобы их состав зависел друг от друга?
Например: Первый список определяет состав двух последующих, второй список определяет состав третьего.
Re: Урок 56. Spinner – выпадающий список
Здравствуйте!
Такой вопрос: а как создать spinner не на основе статического массива в java-файле, а при помощи <string-array ... ></string-array> в ресурсах (например, string.xml)?
Такой вопрос: а как создать spinner не на основе статического массива в java-файле, а при помощи <string-array ... ></string-array> в ресурсах (например, string.xml)?
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 56. Spinner – выпадающий список
Для этого можно использовать функцию getStringArray класса Resources.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 56. Spinner – выпадающий список
Спасибо.
Не могу разобраться с использованием ресурсов - пытаюсь подключать различные импорты, пользуясь догадками, но даже в ресурсках (Resourses.getStringArray) этот метод не появляется в списке возможных.
Не могу разобраться с использованием ресурсов - пытаюсь подключать различные импорты, пользуясь догадками, но даже в ресурсках (Resourses.getStringArray) этот метод не появляется в списке возможных.
Re: Урок 56. Spinner – выпадающий список
Пример кода использования массива в Spinner:fend писал(а):Не могу разобраться с использованием ресурсов
Код: Выделить всё
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);
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 56. Spinner – выпадающий список
Это еще более элегантный способ, чем я предложил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);
}
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 56. Spinner – выпадающий список
Здравствуйте.
Я только не давно начал разбираться с андроидом, поэтому не все понятно пока.
Вопрос: почему событие setOnItemSelectedListener возникает сразу после инициализации приложения, а не непосредственно при "селекте" списка.
Т.е. я хочу, что бы в необходимое текстовое поле попадало значение выбранного мною элемента списка, а оно попадает сразу "item=0" после загрузки приложения.
Спасибо.
Я только не давно начал разбираться с андроидом, поэтому не все понятно пока.
Вопрос: почему событие setOnItemSelectedListener возникает сразу после инициализации приложения, а не непосредственно при "селекте" списка.
Т.е. я хочу, что бы в необходимое текстовое поле попадало значение выбранного мною элемента списка, а оно попадает сразу "item=0" после загрузки приложения.
Спасибо.
Re: Урок 56. Spinner – выпадающий список
Похоже, что этого не избежать. Хотя бы один элемент в спиннер-е всегда должен быть выбран.
В качестве альтернативы можно использовать диалог со списком с одиночным выбором.
В качестве альтернативы можно использовать диалог со списком с одиночным выбором.
Re: Урок 56. Spinner – выпадающий список
Спасибо, а то я всю голову сломал.
Т.е. получается если есть текстовое поле в которое можно просто написать или вставить значение из списка то нужно делать диалог со списком, "батоном" его открывать и закрывать при "селекте" списка, при этом вставляя значение в текстовое поле. Но возникает вопрос: у списка нет события "клик", а опять возникает событие setOnItemSelectedListener, соответственно до диалога? Хотя я совсем мало знаю.
А есть событие у диалога "закрытие"? Можно тогда при "селекте" закрывать диалог, а при "закрытии" диалога вставлять значение выбранного селекта?
Я понятно излагаю? Нужно почитать доки.
Т.е. получается если есть текстовое поле в которое можно просто написать или вставить значение из списка то нужно делать диалог со списком, "батоном" его открывать и закрывать при "селекте" списка, при этом вставляя значение в текстовое поле. Но возникает вопрос: у списка нет события "клик", а опять возникает событие setOnItemSelectedListener, соответственно до диалога? Хотя я совсем мало знаю.
А есть событие у диалога "закрытие"? Можно тогда при "селекте" закрывать диалог, а при "закрытии" диалога вставлять значение выбранного селекта?
Я понятно излагаю? Нужно почитать доки.
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 56. Spinner – выпадающий список
Есть, он называется onItemClickListener.Ullis писал(а):... у списка нет события "клик" ...
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 56. Spinner – выпадающий список
Простите, но разве здесь не написано:KamiSempai писал(а):Есть, он называется onItemClickListener.
setOnItemClickListener(AdapterView.OnItemClickListener l)
A spinner does not support item click events.
Или я чего-то не понимаю.
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 56. Spinner – выпадающий список
Все правильно. Это я ошибся. Глаза зацепились за слово "Список".Ullis писал(а):Или я чего-то не понимаю.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 56. Spinner – выпадающий список
По диалогам я проделал немалую работу. Все изложил в уроках 58-67 на http://startandroid.ru/. Там есть и пример списка с одиночным выбором.Ullis писал(а):А есть событие у диалога "закрытие"? Можно тогда при "селекте" закрывать диалог, а при "закрытии" диалога вставлять значение выбранного селекта?
Re: Урок 56. Spinner – выпадающий список
Спасибо Вам большое, если использовать диалог, то думаю тогда нет смысла использовать Spinner, проще в нем сделать ListView.