Посмотреть, как экран контактов Android

Я разрабатываю приложение с большим количеством элементов, которые должны быть упорядочены в алфавитном порядке, и я хотел бы, чтобы оно выглядело так же, как список контактов Android, то есть

[Letter]
<contact>
<contact>
[Letter]
<contact>
<contact>
<contact>

и т.п.

Каков наилучший способ добиться такого же макета? Я видел несколько руководств по прокручиваемым спискам, но это немного другое. Я немного просмотрел исходный код Android, но если у кого-то есть ответ, это сэкономит мне много времени.

Заранее спасибо.


person Maragues    schedule 21.04.2010    source источник


Ответы (1)


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

Короче говоря, вам нужно создать ListAdapter, который будет обрабатывать как ваши контакты, так и ваши заголовки. Скорее всего, вы будете использовать разные представления для них, и есть методы, которые вы переопределяете на ListAdapter для каждого Android о них. Вы также можете указать, что заголовки не «включены», что означает, что они не будут реагировать на события выбора или щелчка.

person CommonsWare    schedule 21.04.2010
comment
Большое спасибо. Известно ли вам о каких-либо значительных улучшениях производительности, которые можно было бы внести в ваш код? Он очень похож на другой, на который я смотрел: jsharkey.org/blog/2008/08/18/ Я боялся его использовать, потому что он был разработан, когда вышла версия 0.9, и я боялся, что его использование/производительность сильно изменились, но ваш почти на год старше и следует той же идее. PS: я пока не могу голосовать :( - person Maragues; 21.04.2010
comment
Известно ли вам о каких-либо значительных улучшениях производительности, которые можно было бы внести в ваш код? Я не знаю, что у него проблемы с производительностью. Он новее, чем у мистера Шарки, но его, вероятно, все еще работает. Обратите внимание, однако, что это GPLv3, которая может подходить или не подходить для вашего проекта. У меня лицензия Apache 2.0. - person CommonsWare; 21.04.2010
comment
Извините, если я неправильно выразился, я не критиковал вашу работу, просто интересно, знали ли вы о каком-либо возможном улучшении, но еще не разработали его. еще раз спасибо за ответ и за совет по лицензионным отличиям, проверю условия. - person Maragues; 21.04.2010
comment
просто интересно, знали ли вы о каком-либо возможном улучшении, но еще не разработали его. Ну, адаптер не так уж и много. Я вижу некоторые варианты MergeAdapter, которые могли бы обеспечить более высокую производительность за счет кэширования некоторых вычислений за счет невозможности динамического обновления содержимого (например, вызов requery() на одном из дочерних адаптеров). - person CommonsWare; 21.04.2010