325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
1

Кастомный ArrayAdapter для Spinner

15.01.2015, 20:31. Показов 1959. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создал свой адаптер. Привязал его к списку Spinner. Получил идентификатор выбранной записи. Ну вроде бы как получается в каждом элементе списка хранится объект. Теперь по этому идентификатору мне бы найти позицию этого списка. Вот ломаю голову - как?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2015, 20:31
Ответы с готовыми решениями:

Ошибка при установлении ArrayAdapter для TextView
Инициализирую ArrayAdapter arrayAdapter = new ArrayAdapter<>(this,...

Двойной вызов OnItemSelected для spinner
Добрый вечер! Прошу помочь. В main_activity у меня всего лишь один spinner (+id/spinner1). При...

Как работает setOnItemSelectedListener для Spinner?
Доброго дня. есть у меня Spinner: String data = {"sdfsdfs.by", "adfaf.ru",...

Кастомный шрифт для всего приложения
подскажите лучший способ использовать кастомный шрифт для всего приложения.

10
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
15.01.2015, 20:41 2
В смысле?

When the user selects an item from the drop-down, the Spinner object receives an on-item-selected event.
http://developer.android.com/g... ctListener
0
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
15.01.2015, 21:16  [ТС] 3
Armagedo, короче. Весь спинер кастомный. Выбрав позицию через метод get(pos) полчил доступ к объекту. Из объекта вынул полученную идешку записи. В следующее открытие активити я эту идешку уже знаю и мне нужно спинер выбрать на том же объекте. Вот я и думаю как. Хотел использовать IndexOf, но что то не вышло.
Кстати, набор записей и сортировка списка динамические - имеется ввиду при каждом формировании списка (Spinner) его массив данных меняется.
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
16.01.2015, 09:48 4
dubok79, честно говоря, так и не понял, где тут сложность. Для различных списков, хранящихся в адаптере, с целью поиска самого элемента можно использовать саму коллекцию для адаптера (вы же из неё адаптер формируете) либо формировать отдельный список или даже два (один - для объектов, другой - для id).
А, понял, вы хотите, зная id, прокрутить к нужному элементу списка. Тогда можно предположить, что адаптер будет упорядочен так же, как и исходный список. По id найти индекс в исходном массиве. Установить spinner в эту позицию.
0
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
16.01.2015, 10:27  [ТС] 5
Цитата Сообщение от CoolMind Посмотреть сообщение
По id найти индекс в исходном массиве. Установить spinner в эту позицию.
А как мне найди индекс в исходном массиве? Пробежать по нему? Ведь массив состоит из объектов.
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
16.01.2015, 11:15 6
dubok79, для этого вы можете, например, создать 2 массива (один - из id, второй - из объектов). Либо хэш (ключ - id, элементы - индекс и объект, либо просто индекс). Либо массив из двух полей (id и объект). Можно придумать и другие варианты. Например, такой:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    private class FileData {
        private int index;
        private Action action;
    }
 
    LongSparseArray<FileData> arrFileData = new LongSparseArray<FileData>();
 
    ....
    FileData data = new FileData();
    data.index = i++;
    data.action = action;
    arrFileData.put(id, data);
 
    ....
    FileData data = arrFileData.get(id);
1
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
16.01.2015, 11:20  [ТС] 7
Спасибо, это все понятно. Я еще подумаю над своей задачей, потом более конкретно задам вопрос. Наверное я неточно все-таки выражаюсь. А может и решится все.
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
16.01.2015, 11:21 8
dubok79, пожалуйста. Да, там просто нужно немного поэкспериментировать.
0
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
17.01.2015, 01:50  [ТС] 9
В итоге решил задачу методом перебора массива и поиска нужной позиции. Т.к. массив небольшой, мне показалось это проще чем создавать дополнительные массивы данных. Спасибо за помощь.
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
17.01.2015, 20:24 10
dubok79, ну хорошо, раз так. Задачу можно решить многими способами, в том числе и перебором, если искать по id.
0
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
17.01.2015, 22:03  [ТС] 11
CoolMind, спасибо за наводку. Я всегда мучаю себя стандартными методами, но ява приучает пользоваться своим умом. ПМСМ
0
17.01.2015, 22:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.01.2015, 22:03
Помогаю со студенческими работами здесь

Кастомный рекламный блок для приложения
Доброго времени суток. Как сделать свой баннер для открутки js или простых рекламных блоков...

Кастомный userAgent для iframe
Всем привет! Помогите, пож-та, подгрузить страничку чужого сайта в iframe, подменив userAgent....

Кастомный scrollbar для ListBox'a
подскажите, как убрать скроллбар у ListBox'a и нарисовать свой или связать его, например, с...

Кастомный манипулятор для потока
Подскажите, возможно ли написание кастомного манипулятора, который приводил бы всю строку, которая...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru