Я создаю несколько ViewHolders для списков ListViews для своих проектов, внутри держателей форм я храню представления, ImageViews, TextView и многое другое.Проблемы с производительностью Android с помощью ViewHolder
В классе viewholder, я создал также методы, чтобы настроить вид из статуса элемента, IE:
Для элемента списка сообщений чата, я буду иметь viewholder с TextView для отправителя сообщения, ImageView с его аватаром, изображение, которое содержит изображения из ресурсов приложения, чтобы идентифицировать сообщение как звуковое сообщение, видео сообщение, текстовое сообщение и так далее. В том же ViewHolder у меня есть также такие методы, как:
configureViewFromMessage(MessageSender sender, Message message)
, который конфигурирует аватар, имя отправителя и тип сообщения от отправителя и моделей Сообщения POJO.
EDIT: Я добавляю пример адаптера, чтобы объяснить это лучше.
public View getView(int position, View convertView, ViewGroup viewGroup) {
ContactViewHolder cvh;
if (convertView != null) {
cvh = (ContactViewHolder) convertView.getTag();
} else {
convertView = InflateUtils.inflate(mContext, R.layout.contact_list_item);
convertView = InflateUtils.inflate(mContext, R.layout.contact_list_item_container);
cvh = new ContactViewHolder(innerView);
convertView.setTag(cvh);
}
/* Getting message */
Message message = getItem(position);
MessageSender sender = message.getSender();
/* View settings */
cvh.configureViewFromMessage(sender, message, mContext);
/* Context is used to reach App's Resources */
return convertView;
}
Вопросы являются:
- Имея эти методы (возможно, много) внутри ViewHolder может вызвать проблемы с производительностью?
- Должен ли я хранить в ViewHolders только строго обязательные поля и методы?
Просьба показать ваш пользовательский адаптер –