Android Spinner не отображает элементы списка - PullRequest
1 голос
/ 24 марта 2010

Я думаю, что сейчас схожу с ума. Я пытаюсь создать счетчик, заполненный данными, но по какой-то причине текст элементов выпадающего списка не отображается. Я просмотрел все и видел другие сообщения с людьми, имеющими ту же самую проблему. Может кто-нибудь помочь ??

speciesList = (Spinner) findViewById(R.id.speciesList);
    spinnerCursor = nsfdb.fetchAllSpecies();
    startManagingCursor(spinnerCursor);
    //String []cArrayList = new String[]{"dog", "cat", "horse", "other"};
    String[] from = new String[]{"species"};

    int[] to = new int[]{R.id.text1};

    SimpleCursorAdapter locations = new SimpleCursorAdapter(this, R.layout.loc_row, spinnerCursor, from, to);

    locations.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    speciesList.setAdapter(locations);

Спиннер создается просто отлично и заполняется 4 элементами, но всякий раз, когда я нажимаю на спиннер, я вижу 4 элемента без текста и только радиокнопки. Если я выбираю любой из них, я получаю правильное значение выбранного элемента, но данные просто не отображаются.

Ответы [ 5 ]

2 голосов
/ 09 июня 2010

У меня возникла похожая проблема, когда я пытался скопировать и вставить код для настройки ListView в Spinner.

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.array.location, android.R.layout.simple_list_item_1);

необходимо изменить на

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.array.location, android.R.layout.simple_spinner_item);

Я бы попробовал проверить настройки макета в R.layout.loc_row, чтобы убедиться, что это имеет смысл для данных курсора.

1 голос
/ 05 апреля 2011

У меня была такая же проблема, и я использовал: int[] to = new int[]{ R.id.text1}; Я взял выше совет и изменил его на: int[] to = new int[]{ android.R.id.text1};

Теперь все работает отлично, спасибо !!

0 голосов
/ 18 мая 2016

Сначала я получил ту же ошибку. Я использовал

            ArrayAdapter adapter =  ArrayAdapter.createFromResource(getContext(),R.array.nitelik_array,android.R.layout.simple_spinner_item );
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_item); 

Я удалил "simple_spinner_item" и затем переписал его. Оно работает. Я не знаю почему ..

0 голосов
/ 19 июня 2010

User300339

У меня была такая же проблема. Пользователь Qberticus дал мне хороший указатель.

В основном, когда вы указываете макет в SimpleCursorAdapter locations, вы используете пользовательский макет R.layout.loc_row. Последующий вызов setDropDownViewResource продолжит использовать те же привязки идентификатора ресурса.

Вы можете просто использовать следующее:

SimpleCursorAdapter locations = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, spinnerCursor, from, to);

locations.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

speciesList.setAdapter(locations);

Это сработало на моих кодах.

Кстати, для массива от до вы можете использовать это вместо этого.

int[] to = new int[]{ android.R.id.text1};

Подробнее см. На Android - Выпадающий текст / выбор Spinner не отображается

0 голосов
/ 24 марта 2010

Какие столбцы возвращаются fetchAllSpecies? Я считаю, что вам нужно иметь столбец "_id" и столбец "вида". Если у вас есть только один столбец, он может использовать его для идентификатора, но ему нечего использовать для текста.

Я не знаю точно, если это проблема, которую вы испытываете. Я не привязывал счетчик к запросу в БД.

...