diff --git a/recyclerview-adapters/README.md b/recyclerview-adapters/README.md index 7085683..3328fe7 100644 --- a/recyclerview-adapters/README.md +++ b/recyclerview-adapters/README.md @@ -1,11 +1,18 @@ -recyclerview-adapters -===== +# recyclerview-adapters Модуль, расширяющий возможности работы со стандартным `RecyclerView.Adapter`. ### Основные интерфейсы и классы -`DelegationListAdapter` - базовый класс, наследник от `RecyclerView.Adapter`. Управлением элементами списка занимаются делегаты. Они добавляются с помощью метода *addDelegate*. Конструктор принимает `DiffUtil.ItemCallback` - интерфейс, описывающий как различать элементы в адаптере, содержит два абстрактных метода: *areItemsTheSame* - метод, сравнивающий элементы, и *areContentsTheSame* - метод, сравнивающий визуальную составляющую элементов. Возьмем, например, список товаров, у которых есть уникальный *id* и *title*, который может повторяться. В `RecyclerView` отображается только название товара, т.е. *title*. В такой ситуации в методе *areItemsTheSame* нужно будет написать `oldItem.id == newItem.id`, а в методе *areContentsTheSame* - `oldItem.title == newItem.title`. Оба эти метода вычисляются в бэкграунд потоке. Методы `getHeadersCount` и `getFootersCount` нужны, когда в списке есть элементы, которые всегда должны быть наверху или внизу. Например, если нужно добавить кнопку после всех элементов. +`DelegationListAdapter` - базовый класс, наследник от `RecyclerView.Adapter`. + +Конструктор принимает `DiffUtil.ItemCallback` - интерфейс, описывающий как различать элементы в адаптере. Он содержит два абстрактных метода: *areItemsTheSame* - метод, сравнивающий элементы, и *areContentsTheSame* - метод, сравнивающий визуальную составляющую элементов. + +Например, возьмем список товаров, у которых есть уникальный *id* и *title*, который может повторяться. В `RecyclerView` отображается только название товара, т.е. *title*. В такой ситуации в методе *areItemsTheSame* нужно будет написать `oldItem.id == newItem.id`, а в методе *areContentsTheSame* - `oldItem.title == newItem.title`. Оба эти метода вычисляются в бэкграунд потоке. + +Методы `getHeadersCount` и `getFootersCount` нужны, когда в списке есть элементы, которые всегда должны быть наверху или внизу. Например, если нужно добавить кнопку после всех элементов. + +Управлением элементами списка занимаются делегаты. Они добавляются с помощью метода *addDelegate*. `ItemAdapterDelegate` - делегат, который управляет созданием и прикреплением элементов в зависимости от типа элемента.