Страница 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
Не понимаю к чему все это? Человек, фактически, просит реализовать сортировку для не связанных между собой списков. Решение тут одно, поместить все в один список.
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 писал(а):Не понимаю к чему все это? Человек, фактически, просит реализовать сортировку для не связанных между собой списков. Решение тут одно, поместить все в один список.
vizort писал(а):.
видимо я изначально не понял вопроса.