Форум программистов, компьютерный форум CyberForum.ru

Заполнение spinner из массива - Android

Войти
Регистрация
Восстановить пароль
 
 
Miki48RU
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 15
08.03.2016, 22:24     Заполнение spinner из массива #1
Добрый день! Впервые на этом форуме, да и вообще новичок в разработке, поэтому не ругайте сильно, если уже были ответы, просто посоветуйте где посмотреть.

Вопрос такой, есть активность с 5 spinnerами в каждом из которых заносится до 100 значений цифрами. Конечно можно вручную в string сделать массив строк, но значений много и логичнее сделать их путем заполнения массивов в цикле, да и лучше в отдельном классе. Вот пожалуй и главный вопрос как?
Я сделал такой класс https://gist.github.com/anonymous/1f9edf65483b4fc6cbee, а дальше не могу понять как связать ArrayList с элементом spinner в активности. Что нужно использовать, адаптер или что то еще?
Всем спасибо за помощь и учтите, что все когда то начинали с самого 0, ну кроме тех кто учился на это в универе)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2016, 22:24     Заполнение spinner из массива
Посмотрите здесь:

spinner Android
Spinner Android
Android проблема со Spinner'ом
Android spinner в ListView
Android Java spinner
Android Заполнение связанных Spinner массивами из строк
Spinner Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DemD10
58 / 47 / 12
Регистрация: 03.09.2013
Сообщений: 424
08.03.2016, 23:32     Заполнение spinner из массива #2
Ну так почитайте про спинеры, в гугле полно инфы и при чем на русском, посмотрите как подключаются данные, как пишутся кастомные адаптеры если нужно.
Miki48RU
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 15
09.03.2016, 17:31  [ТС]     Заполнение spinner из массива #3
На интересующий вопрос не нашёл ответа, а про адаптеры я же и спросил, потому как не понял как связать с методами из моего класса.

Добавлено через 17 часов 13 минут
сурово
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
09.03.2016, 17:49     Заполнение spinner из массива #4
Miki48RU, не разобрались ещё? Я уже всё забыл, но через adapter можно. Создаёте коллекцию и передаёте в adapter.
Паблито
резкий
1890 / 1624 / 504
Регистрация: 12.05.2014
Сообщений: 5,849
Завершенные тесты: 1
09.03.2016, 17:53     Заполнение spinner из массива #5
Java
1
2
3
4
5
6
7
8
9
        ArrayList<String> list = new ArrayList<>();
        for (int i = 0; i < 100; i++) {
            list.add(String.valueOf(i));
        }
 
        final Spinner spinner = (Spinner) findViewById(R.id.spinner);
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, list);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
Miki48RU
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 15
09.03.2016, 20:17  [ТС]     Заполнение spinner из массива #6
Такой вариант я бы не хотел использовать, есть мысль и желание заолнять спиннеры в отдельном классе, так сказать не загружать активность методами. Можно ли в адаптер вставить геттер с массивом?
Паблито
резкий
1890 / 1624 / 504
Регистрация: 12.05.2014
Сообщений: 5,849
Завершенные тесты: 1
09.03.2016, 20:24     Заполнение spinner из массива #7
Цитата Сообщение от Miki48RU Посмотреть сообщение
Такой вариант я бы не хотел использовать,
это был пример, если не понятно

Цитата Сообщение от Miki48RU Посмотреть сообщение
Можно ли в адаптер вставить геттер с массивом?
попробовать что-то мешает?
Miki48RU
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 15
09.03.2016, 20:28  [ТС]     Заполнение spinner из массива #8
Логично, попробую. отпишусь.
DemD10
58 / 47 / 12
Регистрация: 03.09.2013
Сообщений: 424
09.03.2016, 20:44     Заполнение spinner из массива #9
Почитайте про кастомные адаптеры к ListView. Сразу станет всё понятней, свой адаптер и модель данных для наполнения, самый очевидный пример.
Miki48RU
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 15
09.03.2016, 22:03  [ТС]     Заполнение spinner из массива #10
Геттеры в адаптере не дает использовать.

Добавлено через 36 минут
сделал свой адаптер
Java
1
2
3
4
5
6
7
8
private void fillSpinners(){
        for (int i = 1; i < spinners.length; i++) {
            Spinner spinner = (Spinner)findViewById(spinners[i]);
            ArrayAdapter<Integer> adapter = ArrayAdapter.createFromResource(this, spinnersData.get(i), android.R.layout.simple_spinner_item);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(adapter);
        }
    }
но на spinnersData.get(i) указывает, что ошибка аргумента, при этом все равно требует заполнить int в скобках. В чем опять проблема?
Паблито
резкий
1890 / 1624 / 504
Регистрация: 12.05.2014
Сообщений: 5,849
Завершенные тесты: 1
10.03.2016, 12:05     Заполнение spinner из массива #11
неужели так сложно внимательно посмотреьт мой код и сделать пару выводов?
во-первых в адаптер нельзя всунуть List интегеров, как минимум надо при заполнении листа инты переводить в строки
во-вторых в моем примере адаптер создается вообще не так

Цитата Сообщение от Miki48RU Посмотреть сообщение
В чем опять проблема?
проблема в том, что ты пришел на форум со своим мнением и не читаешь что тебе пишут
Miki48RU
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 15
10.03.2016, 12:47  [ТС]     Заполнение spinner из массива #12
Паблито, в Ваших нравоучениях не нуждаюсь. Если Вы посмотрите, то это совсем не Ваш код, это мой адаптер, а наличие листа интегров , или срингов, не влияет на наличие ошибки указанной мной.
Паблито
резкий
1890 / 1624 / 504
Регистрация: 12.05.2014
Сообщений: 5,849
Завершенные тесты: 1
10.03.2016, 12:58     Заполнение spinner из массива #13
а я и не говорил что это мой код
мой код выше - рабочий, если на него пристально посмотреть то можно заметить что адаптер создается не так и про строки я уже тоже говорил

твое сообщение выше еше раз подтверждает мои слова
Цитата Сообщение от Паблито Посмотреть сообщение
ты пришел на форум со своим мнением и не читаешь что тебе пишут
Добавлено через 8 минут

Не по теме:

странно, что в теме еще не засветился защитник угнетенных и бог культурного общения )

Miki48RU
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 15
10.03.2016, 16:16  [ТС]     Заполнение spinner из массива #14
Цитата Сообщение от Паблито Посмотреть сообщение
мой код выше - рабочий, если на него пристально посмотреть то можно заметить что адаптер создается не так и про строки я уже тоже говорил
Ваш код мне не интересен, равно как и адаптер, реализация в моем случае другая, более логичная.
Bend3r
 Аватар для Bend3r
146 / 133 / 18
Регистрация: 29.07.2012
Сообщений: 706
10.03.2016, 16:28     Заполнение spinner из массива #15
Цитата Сообщение от Miki48RU Посмотреть сообщение
сделал свой адаптер
Ничего вы не создали, вы просто откуда-то скопипастили пару строк. Если вы хотите создать кастомный адаптер, то создайте отдельный класс который будет наследоваться от класса BaseAdapter. Если честно, судя по вашим комментариям вы не в адеквате, вам отправили готовый пример, а вы начинаете ерничать и делать вид мол вы все сами можете. Тебе показали как это сделать, а создавать классы и тому подобным вещам тебя тут учить не будут.

Добавлено через 5 минут
Цитата Сообщение от Паблито Посмотреть сообщение
во-первых в адаптер нельзя всунуть List интегеров, как минимум надо при заполнении листа инты переводить в строки
С чего вы решили что нельзя? Можно.
CSS
1
2
3
However the TextView is referenced, it will be filled with the toString() of each object in the array. 
You can add lists or arrays of custom objects. Override the toString() method of your objects to determine 
what text will be displayed for the item in the list.
Я думаю это стоит прочитать всем - http://developer.android.com/intl/ru...ayAdapter.html
Miki48RU
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 15
10.03.2016, 16:30  [ТС]     Заполнение spinner из массива #16
Так и знал, что появятся великие программисты и будут вместо подсказок тыкать разбухшим самомнением.
Если Вы прочитаете пост, самый первый, то поймете, что я указал на то, как мне нужно реализовать спиннер, через свой класс, не размещая исходный код в активности, а то что показал Паблито, совсем другая реализация, причем не совсем правильная, хотя как пример и подходящая, но не для моей реализации. Ничего лишнего я не просил, а указать на то как реализовать заполнение спиннера через массив, или тот же List но из другого класса.
Кроме того, мой адаптер это не просто строчки кода, это как раз кастомная реализация заполнения List массивом нужных спиннеров, проблема только в том, что он выкидывает exception и я не пойму почему.

Error37, 51) error: method createFromResource in class ArrayAdapter<T> cannot be applied to given types;
required: Context,int,int
found: RatesActivity,List,int
reason: actual argument List cannot be converted to int by method invocation conversion
where T is a type-variable:
T extends Object declared in class ArrayAdapter
Bend3r
 Аватар для Bend3r
146 / 133 / 18
Регистрация: 29.07.2012
Сообщений: 706
10.03.2016, 16:32     Заполнение spinner из массива #17
Цитата Сообщение от Miki48RU Посмотреть сообщение
Так и знал, что появятся великие программисты и будут вместо подсказок тыкать разбухшим самомнением.
Если Вы прочитаете пост, самый первый, то поймете, что я указал на то, как мне нужно реализовать спиннер, через свой класс, не размещая исходный код в активности, а то что показал Паблито, совсем другая реализация, причем не совсем правильная, хотя как пример и подходящая, но не для моей реализации. Ничего лишнего я не просил, а указать на то как реализовать заполнение спиннера через массив, или тот же List но из другого класса.
Кроме того, мой адаптер это не просто строчки кода, это как раз кастомная реализация заполнения List массивом нужных спиннеров, проблема только в том, что он выкидывает exception и я не пойму почему.
Читай http://stackoverflow.com/questions/8...-for-list-view
Miki48RU
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 15
10.03.2016, 16:36  [ТС]     Заполнение spinner из массива #18
Цитата Сообщение от Bend3r Посмотреть сообщение
Я думаю это стоит прочитать всем - http://developer.android.com/intl/ru...ayAdapter.html
Кстати, по вашей ссылке нашел нужный, как мне кажется метод
static ArrayAdapter<CharSequence> createFromResource(Context context, int textArrayResId, int textViewResId)
Creates a new ArrayAdapter from external resources. Только что то я не так делаю в нем.
Паблито
резкий
1890 / 1624 / 504
Регистрация: 12.05.2014
Сообщений: 5,849
Завершенные тесты: 1
10.03.2016, 16:38     Заполнение spinner из массива #19
Цитата Сообщение от Bend3r Посмотреть сообщение
С чего вы решили что нельзя? Можно.
можно примерчик как в стандартный ArrayAdapter передать список c Integer-ами ) буду благодарен
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2016, 17:27     Заполнение spinner из массива
Еще ссылки по теме:

Spinner элементы Android
Android Spinner и NavigationDrawer
Android Spinner
Spinner Android
Android Spinner в AlertDialog

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Bend3r
 Аватар для Bend3r
146 / 133 / 18
Регистрация: 29.07.2012
Сообщений: 706
10.03.2016, 17:27     Заполнение spinner из массива #20
Цитата Сообщение от Паблито Посмотреть сообщение
можно примерчик как в стандартный ArrayAdapter передать список c Integer-ами ) буду благодарен
Java
1
2
Integer[] item = new Integer[]{1,2,3,4};
ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(this,android.R.layout.simple_spinner_item, item);
Добавлено через 7 минут
Цитата Сообщение от Miki48RU Посмотреть сообщение
Кстати, по вашей ссылке нашел нужный, как мне кажется метод
static ArrayAdapter<CharSequence> createFromResource(Context context, int textArrayResId, int textViewResId)
Creates a new ArrayAdapter from external resources. Только что то я не так делаю в нем.
Вот что принимает метод createFromResource.

context Context: The application's environment.
textArrayResId int: The identifier of the array to use as the data source.
textViewResId int: The identifier of the layout used to create views.


Возможно ты неправильные параметры даешь. Можно get(i) возвращает object, и тебе еще нужно кастить в int. Проще воспользуйся двумя строчками выше, передавая вот этим образом getResources().getStringArray(id) в третий параметр твой массив который сидит в string.xml. Я думаю эффект будет тот же самый.
Yandex
Объявления
10.03.2016, 17:27     Заполнение spinner из массива
Ответ Создать тему

Метки
android, spinner
Опции темы

Текущее время: 04:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru