Урок 56. Spinner – выпадающий список

Обсуждение уроков
Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 56. Spinner – выпадающий список

Сообщение Foenix » 05 дек 2013, 22:49

ты тупишь в том, что так выкладывать код ..
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

DVL999
Сообщения: 2
Зарегистрирован: 27 дек 2013, 18:53

Re: Урок 56. Spinner – выпадающий список

Сообщение DVL999 » 27 дек 2013, 18:59

Такой вопрос: изначально выпадающий список привязан по размеру к спиннеру, т.е. верхний левый угол списка привязан к нижнему левому углу спиннера, а верхний правый угол - к нижнему правому углу спиннера (по аналогии с android:layout_alignLeft / Right)
Но если установить в Манифесте к примеру
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
, то выпадающий список больше не привязывается к спиннеру и располагается в центре экрана... Так вот: можно ли его прикрепить обратно к спиннеру?

Аватара пользователя
Kordan
Сообщения: 36
Зарегистрирован: 07 май 2014, 12:51

Re: Урок 56. Spinner – выпадающий список

Сообщение Kordan » 15 май 2014, 13:44

1.У меня ошибка в том, что нет поля R.id.spinner, а создать я его не могу т.к. ручное изменение R запрещено. Что делать?

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 56. Spinner – выпадающий список

Сообщение klblk » 16 май 2014, 08:26

Kordan писал(а):1.У меня ошибка в том, что нет поля R.id.spinner, а создать я его не могу т.к. ручное изменение R запрещено. Что делать?
Прописать id у спинера в xml? Если не помогает, то может ошибка в xml файлe, либо достаточно сделать project->clean

Аватара пользователя
Kordan
Сообщения: 36
Зарегистрирован: 07 май 2014, 12:51

Re: Урок 56. Spinner – выпадающий список

Сообщение Kordan » 20 май 2014, 18:22

klblk писал(а):
Kordan писал(а):1.У меня ошибка в том, что нет поля R.id.spinner, а создать я его не могу т.к. ручное изменение R запрещено. Что делать?
Прописать id у спинера в xml? Если не помогает, то может ошибка в xml файлe, либо достаточно сделать project->clean

Разобрался с этим, поместив вручную компонент на main.
П.С. А как обратиться в определённому элементу? Допустим нажимаю на 1(0) и он выводит "Hello", на 2(1) и выводит "World"?

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 56. Spinner – выпадающий список

Сообщение klblk » 21 май 2014, 07:37

Kordan писал(а):
klblk писал(а):
Kordan писал(а):1.У меня ошибка в том, что нет поля R.id.spinner, а создать я его не могу т.к. ручное изменение R запрещено. Что делать?
Прописать id у спинера в xml? Если не помогает, то может ошибка в xml файлe, либо достаточно сделать project->clean

Разобрался с этим, поместив вручную компонент на main.
П.С. А как обратиться в определённому элементу? Допустим нажимаю на 1(0) и он выводит "Hello", на 2(1) и выводит "World"?
не понятен вопрос. В OnItemSelectedListener обрабатываются события. В уроке выводится Toast с номером позиции выбранного элемента, что мешает там вывести и "Hello" и "World".
Или нужно что-то другое?

Аватара пользователя
Kordan
Сообщения: 36
Зарегистрирован: 07 май 2014, 12:51

Re: Урок 56. Spinner – выпадающий список

Сообщение Kordan » 21 май 2014, 07:56

klblk писал(а): не понятен вопрос. В OnItemSelectedListener обрабатываются события. В уроке выводится Toast с номером позиции выбранного элемента, что мешает там вывести и "Hello" и "World".
Или нужно что-то другое?
Решил проблему с помощью

switch(position)
{
case 0:
break;
...
}

EspanaMia
Сообщения: 24
Зарегистрирован: 10 янв 2014, 11:03

Re: Урок 56. Spinner – выпадающий список

Сообщение EspanaMia » 17 июн 2014, 14:27

Подскажите, как скрыть item в списке spinner`а, который в данный момент выбран ?

Салта
Сообщения: 2
Зарегистрирован: 11 фев 2015, 12:40

Re: Урок 56. Spinner – выпадающий список

Сообщение Салта » 16 фев 2015, 08:31

Добрый день! Подскажите пожалуйста. В ресурсах созданы все необходимые массивы по заполнению списка спиннера, первый спиннер заполняется одним массивом, а второй должен через Switch case на выбор заполнять второй список массивом нужным. То есть два зависимых спиннера. Подскажите пожалуйста как во втором спиннере прописать чтобы в свитче выбиралась позиция первого списка? не получается у меня(

Radgalf
Сообщения: 1
Зарегистрирован: 11 май 2015, 12:22

Re: Урок 56. Spinner – выпадающий список

Сообщение Radgalf » 11 май 2015, 12:27

Здравствуйте. Подскажите, пожалуйста. Как настроить spinner таким образом что бы он выдавал элементы по введенным буквам. Т.е. ввели Пе, список перешел и показал все слова начинающиеня так же (Петров, Петя, Переход и т.п.). Или это уже не spinner? Просто в списке из 1000 элементов эту штука очень нужна.

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Урок 56. Spinner – выпадающий список

Сообщение doter.ua » 11 май 2015, 13:23

Radgalf писал(а):Здравствуйте. Подскажите, пожалуйста. Как настроить spinner таким образом что бы он выдавал элементы по введенным буквам. Т.е. ввели Пе, список перешел и показал все слова начинающиеня так же (Петров, Петя, Переход и т.п.). Или это уже не spinner? Просто в списке из 1000 элементов эту штука очень нужна.
.addTextChangedListener(new TextWatcher() { ... обновление спиннера
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

K_Vladimir
Сообщения: 36
Зарегистрирован: 28 июн 2015, 03:13

Re: Урок 56. Spinner – выпадающий список

Сообщение K_Vladimir » 13 июл 2015, 13:51

Добрый день!
Сделал всё точно по уроку. А Title в приложении не хочет появляться???
Видимо почему-то не работает метод spinner.setPrompt("Title");

Код: Выделить всё

import android.app.Activity;
import android.os.Bundle;

import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;


public class MainActivity extends Activity {

String[] data = {"one", "two", "three", "four", "five"};
// public Spinner spinner;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// адаптер
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setAdapter(adapter);
// заголовок
spinner.setPrompt("Title");
// выделяем элемент
spinner.setSelection(2);
// устанавливаем обработчик нажатия
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// показываем позиция нажатого элемента
Toast.makeText(getBaseContext(), "Position = " + position, Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
}

Light310
Сообщения: 6
Зарегистрирован: 13 июн 2015, 00:59

Re: Урок 56. Spinner – выпадающий список

Сообщение Light310 » 08 авг 2015, 23:12

Здравствуйте.
Столкнулся с крайне странным багом, решения в интернете не нашёл (надо сказать, что и подобных баг-репортов тоже, что кажется мне ещё более странным). Делаю спиннер в фрагменте, от урока почти не отличается.

Код: Выделить всё

String[] spinner_data = {"1","2","3","4","5"};
...
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity().getApplicationContext(), android.R.layout.simple_spinner_item, spinner_data);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

Spinner spinner = (Spinner) v.findViewById(R.id.spnGamesPerMatch);
spinner.setAdapter(adapter);
В xml'ке стилей у спиннера никаких нет,
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/spnGamesPerMatch" />

Тем не менее, насколько я понимаю, он не резолвит android.R.layout шаблоны для элементов списка. При этом ошибки никакой не выдаёт, но выглядит этот ниспадающий список следующим образом:
Изображение
Т.е. данные в нём есть (он нормально обрабатывает клик, и это видно при нажатии - правый скриншот), но внешний вид из стандартных android.R.layout файлов он не подтянул. Я посмотрел декларацию этих файлов - android.R.layout.simple_spinner_item - там код, соответствующий описанию на андроидовском сайте, т.е. физически у меня все они присутствуют.
Не подскажете, в чём ещё может быть проблема? Куда копать? В интернете даже аналогичных баг-репортов не нашёл.
Буду благодарен за помощь.

P.S.: Работаю в Android Studio.

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 56. Spinner – выпадающий список

Сообщение klblk » 10 авг 2015, 07:51

Что-то мне подсказывает что все нормально работает, просто белое на белом сложно увидеть. Проблема где-то в стилях судя по всему.

Light310
Сообщения: 6
Зарегистрирован: 13 июн 2015, 00:59

Re: Урок 56. Spinner – выпадающий список

Сообщение Light310 » 11 авг 2015, 01:32

klblk писал(а):Что-то мне подсказывает что все нормально работает, просто белое на белом сложно увидеть. Проблема где-то в стилях судя по всему.
Да, у меня мысли схожие. Пробовал и в Eclipse, и в AS, результат одинаков. Если пройти к определению (go to Declaration) элемента simple_spinner_item, то там используется стиль style="?android:attr/spinnerItemStyle" , а вот его определение я уже не могу найти и не знаю, как это делается. Вернее, нахожу <attr name="spinnerItemStyle" format="reference" />, но не знаю, как понять содержимое данного стиля, не очень в этом вопросе просвещён.

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 56. Spinner – выпадающий список

Сообщение klblk » 11 авг 2015, 07:47

Light310 писал(а):
klblk писал(а):Что-то мне подсказывает что все нормально работает, просто белое на белом сложно увидеть. Проблема где-то в стилях судя по всему.
Да, у меня мысли схожие. Пробовал и в Eclipse, и в AS, результат одинаков. Если пройти к определению (go to Declaration) элемента simple_spinner_item, то там используется стиль style="?android:attr/spinnerItemStyle" , а вот его определение я уже не могу найти и не знаю, как это делается. Вернее, нахожу <attr name="spinnerItemStyle" format="reference" />, но не знаю, как понять содержимое данного стиля, не очень в этом вопросе просвещён.
Ну самый простой способ, чтобы не разбираться со стилями, скопировать simple_spinner_item и simple_spinner_dropdown_item указать в них свои цвета для текста, и адаптеру скормить уже их.

Light310
Сообщения: 6
Зарегистрирован: 13 июн 2015, 00:59

Re: Урок 56. Spinner – выпадающий список

Сообщение Light310 » 11 авг 2015, 22:06

klblk писал(а): Ну самый простой способ, чтобы не разбираться со стилями, скопировать simple_spinner_item и simple_spinner_dropdown_item указать в них свои цвета для текста, и адаптеру скормить уже их.
Цвета я и сам могу проставить (собственно, как я сейчас и сделал - создал свои собственные элементы для отображения и скормил их адаптеру), просто в этом стиле ведь не только цвета, там много чего сделано, чтобы элемент выглядел красиво и закончено, и мне его и другие стандартные стили хотелось бы использовать. Вот и ищу, может, кто сталкивался с подобной проблемой, что встроенные стили не срабатывают, потому что на sof подобных баг-репортов на нашёл, как и на других ресурсах.

Вовчик
Сообщения: 1
Зарегистрирован: 22 янв 2016, 15:11

Re: Урок 56. Spinner – выпадающий список

Сообщение Вовчик » 22 янв 2016, 15:19

Добрый день. Столкнулся с такой проблемой, создал Spinner и SearchView, поместил их в тулбар,поставил им атрибуты app:showAsAction="ifRoom|collapseActionView", если кликнуть на значок спиннера, он открывается на весь тулбар, и закрывается стрелкой назад, то же самое с searchView, но вот если сначала открыть один,а потом не закрывая его открыть другой, то они наслаиваются друг на друга и потом не пропадают вообще.. Подскажите, как решить эту проблему. Заранее спасибо!

Код сеню:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
>

<item
android:id="@+id/item_search"
android:title="@android:string/search_go"
android:icon="@drawable/abc_ic_search_api_mtrl_alpha"
app:showAsAction="ifRoom|collapseActionView"
app:actionViewClass="android.support.v7.widget.SearchView" />

<item
android:id="@+id/action_sort"
app:actionViewClass="android.widget.Spinner"
app:showAsAction="ifRoom|collapseActionView"
android:icon="@drawable/ic_sort_white_24dp"
android:title="@string/sort"/>
</menu>

Код активити:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.item_search, menu);

MenuItem searchItem = menu.findItem(R.id.item_search);
searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
searchView.setQueryHint(getResources().getString(R.string.search));
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}

@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});


MenuItem mainMenuSpinner = menu.findItem(R.id.action_sort);
spinner = (Spinner) MenuItemCompat.getActionView(mainMenuSpinner);
MySpinnerAdapter spinnerAdapter = new MySpinnerAdapter(this, spinnerArrayList);

spinner.setAdapter(spinnerAdapter);
spinnerAdapter.setDropDownViewResource(R.layout.spinner_dropdown_view);

return true;
}

bonny
Сообщения: 3
Зарегистрирован: 05 май 2014, 18:21

Re: Урок 56. Spinner – выпадающий список

Сообщение bonny » 06 авг 2016, 14:32

Как в AlertDialog сделать его?
AlertDialog вызываю через fab.

LayoutInflater inflater = getLayoutInflater();
View dialoglayout = inflater.inflate(R.layout.dialog_layout, null);

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Заголовок");
builder.setView(dialoglayout);
builder.setPositiveButton("ОК", myClickListener);
builder.setNegativeButton("Отмена", null);
builder.show();

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, new String[] {"0","1","2"});
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

// Выпадающий список
Spinner spinnerQ = (Spinner) findViewById(R.id.spinnerQuality);
spinnerQ.setAdapter(adapter);
spinnerQ.setSelection(0); // Выделяем элемент по-умолчанию

ОШИБКА на строке spinnerQ.setAdapter(adapter);
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' on a null object reference
at ru.bonny.savevideo.MainActivity$override.showAlertDialog(MainActivity.java:96)

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 56. Spinner – выпадающий список

Сообщение Foenix » 07 авг 2016, 14:32

у тебя наверное spinnerQ = null, т.е. не найден spinnerQuality на dialog_layout
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Ответить