MergeAdapter - показать элементы в порядку добавления

Интерфейс, диалоги, темы, стили, меню
Ответить
vizort
Сообщения: 49
Зарегистрирован: 02 мар 2013, 22:43

MergeAdapter - показать элементы в порядку добавления

Сообщение vizort » 16 дек 2013, 15:50

Я использую MergeAdapter для listview. Он отображает сначала элементы первого добавленного адаптера потом второго и т.д. Но мне нужно отображать элементы в порядку добавления. Подскажите пожалуйста как это сделать.

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: MergeAdapter - показать элементы в порядку добавления

Сообщение KamiSempai » 16 дек 2013, 16:20

В данном случае, ни как. Используйте один общий список для всех элементов и один общий адаптер для них.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: MergeAdapter - показать элементы в порядку добавления

Сообщение altwin » 16 дек 2013, 19:04

KamiSempai писал(а):В данном случае, ни как. Используйте один общий список для всех элементов и один общий адаптер для них.
То есть нельзя поместить все aдаптеры в объект типа Queue(http://developer.android.com/reference/ ... Queue.html) и выводить оттуда???
Изображение

vizort
Сообщения: 49
Зарегистрирован: 02 мар 2013, 22:43

Re: MergeAdapter - показать элементы в порядку добавления

Сообщение vizort » 16 дек 2013, 21:19

KamiSempai писал(а):В данном случае, ни как. Используйте один общий список для всех элементов и один общий адаптер для них.
Но мне нужно несколько вариантов отображения данных в listView, в одном случае просто сообщение, в другом картинка, сообщение и кнопки, в третьем еще что-то. Сделать универсальный адаптер и править кучу кода программно?

А если наследоваться от MergeAdapter'a и переопределить getView()?

vizort
Сообщения: 49
Зарегистрирован: 02 мар 2013, 22:43

Re: MergeAdapter - показать элементы в порядку добавления

Сообщение vizort » 16 дек 2013, 21:31

altwin писал(а):
KamiSempai писал(а):В данном случае, ни как. Используйте один общий список для всех элементов и один общий адаптер для них.
То есть нельзя поместить все aдаптеры в объект типа Queue(http://developer.android.com/reference/ ... Queue.html) и выводить оттуда???
Не совсем понял что вы имеете в виду.
MergeAdapter и так поочередно выводит элементы каждого адаптера.

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: MergeAdapter - показать элементы в порядку добавления

Сообщение altwin » 16 дек 2013, 21:41

vizort писал(а):
altwin писал(а):
KamiSempai писал(а):В данном случае, ни как. Используйте один общий список для всех элементов и один общий адаптер для них.
То есть нельзя поместить все aдаптеры в объект типа Queue(http://developer.android.com/reference/ ... Queue.html) и выводить оттуда???
Не совсем понял что вы имеете в виду.
MergeAdapter и так поочередно выводит элементы каждого адаптера.
Queue или по русски очередь как раз не просто выводит поочередно, а как раз в порядке добавления методом FiFo(first in - first out). Т.е. первый добавленный элемент и выводится первым.(но это я сужу исходя из стандартной реализацией, не уверен, что в Андроид именно так, хотя очередь и в Африке должна быть очередью.) Соответственно подобным способом можно менять порядок отображения используя различные очереди/стек или другие структуры.(на сколько я понял вопрос изначально вы хотели именно изменить порядок вывода)
Последний раз редактировалось altwin 16 дек 2013, 21:43, всего редактировалось 1 раз.
Изображение

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: MergeAdapter - показать элементы в порядку добавления

Сообщение KamiSempai » 16 дек 2013, 21:42

altwin писал(а):То есть нельзя поместить все aдаптеры в объект типа Queue(http://developer.android.com/reference/ ... Queue.html) и выводить оттуда???
Не понимаю к чему все это? Человек, фактически, просит реализовать сортировку для не связанных между собой списков. Решение тут одно, поместить все в один список.
vizort писал(а):Но мне нужно несколько вариантов отображения данных в listView, в одном случае просто сообщение, в другом картинка, сообщение и кнопки, в третьем еще что-то. Сделать универсальный адаптер и править кучу кода программно?

А если наследоваться от MergeAdapter'a и переопределить getView()?
Посмотрите в исходный код MergeAdapter'a, он очень удачно использует getItemViewType.

Не все знают но у адаптера есть следующие методы:
getViewTypeCount() - возвращает количество разных строк используемых в списке.
getItemViewType(int position) - и собственно сам тип для указанной строки.

Если вы правильно переопределите эти методы, то ListView сам будет знать в какой строке что находится и будет подставлять нужный convertView для переиспользования в getView. После чего останется только самому узнать текущий тип в коде getView, при помощи того-же getItemViewType и действовать по обстоятельствам.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: MergeAdapter - показать элементы в порядку добавления

Сообщение altwin » 16 дек 2013, 21:46

KamiSempai писал(а):
altwin писал(а):То есть нельзя поместить все aдаптеры в объект типа Queue(http://developer.android.com/reference/ ... Queue.html) и выводить оттуда???
Не понимаю к чему все это? Человек, фактически, просит реализовать сортировку для не связанных между собой списков. Решение тут одно, поместить все в один список.
vizort писал(а):.
видимо я изначально не понял вопроса.
Изображение

Ответить