Найти тему

Отчиличия в коде

Вот что отличается между нашим предыдущим кодом и этой реализацией активности и getView():


- Мы по-прежнему используем String[] items в качестве списка нелепых слов, но вместо того, чтобы передавать массив String прямо в ArrayAdapter, мы превращаем его в список объектов RowModel. RowModel - это жалкое подобие изменяемой модели; в нем хранятся нелепые слова плюс текущее состояние проверки. В реальной системе это могут быть объекты, заполняемые из курсора, а свойства будут иметь большее значение для бизнеса.

- Утилитарные методы, такие как onListItemClick(), должны были быть обновлены, чтобы отразить переход от чисто строковой модели к использованию RowModel.

- Подкласс ArrayAdapter (CheckAdapter) в getView() проверяет, не является ли convertView нулевым. Если да, то мы создаем новый ряд, надувая простой макет (см. следующий код), а также прикрепляем ViewWrapper (также в следующем коде). Для RatingBar строки мы добавляем анонимный слушатель onRatingChanged(), который смотрит на тег строки (getTag()) и преобразует его в Integer, представляющий позицию в ArrayAdapter, которую отображает эта строка. Используя это, флажок может получить фактическую модель RowModel для строки и обновить модель на основе нового состояния строки рейтинга. Он также обновляет текст, расположенный рядом с RatingBar при установке флажка, чтобы он соответствовал состоянию рейтинговой панели.