Создать класс, наследующий RecyclerView.Adapter<ViewHolder>
. Где ViewHolder
— это внутренний класс, наследующий RecyclerView.ViewHolder
.
Реализовать три абстрактных метода:
onCreateViewHolder(parent: ViewGroup, viewType: Int)
: Создает новый экземпляр ViewHolder
. Обычно здесь производится inflate макета элемента списка.onBindViewHolder(holder: ViewHolder, position: Int)
: Связывает данные с элементами из ViewHolder
для указанной позиции.getItemCount(): Int
: Возвращает общее количество элементов в наборе данных.Внутри класса адаптера определить список или другой контейнер для хранения данных, которые будут отображаться.
В методе onCreateViewHolder
получить LayoutInflater
из контекста parent
, затем вызвать inflater.inflate()
для создания View элемента списка. Передать созданный View в конструктор ViewHolder
.
Внутри внутреннего класса ViewHolder
получить ссылки на View элементы макета элемента списка, с которыми нужно работать. Это делается в конструкторе ViewHolder
, получающем View.
В методе onBindViewHolder
использовать position
для получения соответствующего элемента данных из коллекции. Затем установить значения свойств View элементов в holder
на основе данных из этого элемента.
Добавить методы для обновления данных в адаптере (например, setData(newData: List<Item>)
или addItem(item: Item)
). После изменения данных необходимо вызвать методы, информирующие RecyclerView
об изменениях, например, notifyDataSetChanged()
или более специфичные notifyItemInserted()
, notifyItemRemoved()
, notifyItemChanged()
, notifyItemRangeChanged()
.
Пример структуры:
kotlin
Создать класс, наследующий RecyclerView.Adapter<ViewHolder>
. Где ViewHolder
— это внутренний класс, наследующий RecyclerView.ViewHolder
.
Реализовать три абстрактных метода:
onCreateViewHolder(parent: ViewGroup, viewType: Int)
: Создает новый экземпляр ViewHolder
. Обычно здесь производится inflate макета элемента списка.onBindViewHolder(holder: ViewHolder, position: Int)
: Связывает данные с элементами из ViewHolder
для указанной позиции.getItemCount(): Int
: Возвращает общее количество элементов в наборе данных.Внутри класса адаптера определить список или другой контейнер для хранения данных, которые будут отображаться.
В методе onCreateViewHolder
получить LayoutInflater
из контекста parent
, затем вызвать inflater.inflate()
для создания View элемента списка. Передать созданный View в конструктор ViewHolder
.
Внутри внутреннего класса ViewHolder
получить ссылки на View элементы макета элемента списка, с которыми нужно работать. Это делается в конструкторе ViewHolder
, получающем View.
В методе onBindViewHolder
использовать position
для получения соответствующего элемента данных из коллекции. Затем установить значения свойств View элементов в holder
на основе данных из этого элемента.
Добавить методы для обновления данных в адаптере (например, setData(newData: List<Item>)
или addItem(item: Item)
). После изменения данных необходимо вызвать методы, информирующие RecyclerView
об изменениях, например, notifyDataSetChanged()
или более специфичные notifyItemInserted()
, notifyItemRemoved()
, notifyItemChanged()
, notifyItemRangeChanged()
.
Пример структуры:
kotlin
Register or sign in to get access to full answers for all questions from the question bank.