Страница 1 из 1

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

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

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

Добавлено: 16 дек 2013, 16:20
KamiSempai
В данном случае, ни как. Используйте один общий список для всех элементов и один общий адаптер для них.

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

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

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

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

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

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

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

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

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

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

Добавлено: 16 дек 2013, 21:42
KamiSempai
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 и действовать по обстоятельствам.

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

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