RecyclerView и его компоненты. Распространенные ошибки

Содержание

Слайд 2

План 4/44

План

4/44

Слайд 3

Проблематика План 4/44

Проблематика

План

4/44

Слайд 4

Проблематика RecyclerView и его компоненты План 4/44

Проблематика
RecyclerView и его компоненты

План

4/44

Слайд 5

Проблематика RecyclerView и его компоненты Распространенные ошибки План 4/44

Проблематика
RecyclerView и его компоненты
Распространенные ошибки

План

4/44

Слайд 6

Проблематика tinkoff.ru

Проблематика

tinkoff.ru

Слайд 7

Item списка 3/44

Item списка

3/44

Слайд 8

Item списка 3/44

Item списка

3/44

Слайд 9

Item списка 3/44

Item списка

3/44

Слайд 10

ScrollView 3/44

ScrollView

3/44

Слайд 11

ScrollView 3/44

ScrollView

3/44

Слайд 12

Минимум знаний Быстрая реализация Менеджер доволен (мало элементов) ScrollView. Достоинства 4/44

Минимум знаний
Быстрая реализация
Менеджер доволен (мало элементов)

ScrollView. Достоинства

4/44

Слайд 13

Очень медленный Memory Overflow Менеджер недоволен (много элементов) ScrollView. Недостатки 4/44

Очень медленный
Memory Overflow
Менеджер недоволен (много элементов)

ScrollView. Недостатки

4/44

Слайд 14

ListView tinkoff.ru

ListView

tinkoff.ru

Слайд 15

ListView Создает только те элементы, которые мы видим Концепция переиспользования

ListView

Создает только те элементы, которые мы видим
Концепция переиспользования

Слайд 16

Отображение Скролл Clicks Структура ListView 4/44 ListView Создает Наполняет Adapter

Отображение
Скролл
Clicks

Структура ListView

4/44

ListView

Создает
Наполняет

Adapter

Слайд 17

ListView Adapter 3/44

ListView Adapter

3/44

Слайд 18

ListView Adapter 3/44

ListView Adapter

3/44

Слайд 19

ListView Adapter 3/44

ListView Adapter

3/44

Слайд 20

ListView Adapter 3/44

ListView Adapter

3/44

Слайд 21

ListView Adapter 3/44

ListView Adapter

3/44

Слайд 22

ListView Adapter 3/44

ListView Adapter

3/44

Слайд 23

ViewHolder 3/44

ViewHolder

3/44

Слайд 24

ViewHolder 3/44

ViewHolder

3/44

Слайд 25

ViewHolder 3/44

ViewHolder

3/44

Слайд 26

ViewHolder 3/44

ViewHolder

3/44

Слайд 27

ViewHolder 3/44

ViewHolder

3/44

Слайд 28

Концепция переиспользования Паттерн Adapter Паттерн ViewHolder ListView. Достоинства 4/44

Концепция переиспользования
Паттерн Adapter
Паттерн ViewHolder

ListView. Достоинства

4/44

Слайд 29

Не умеет «из коробки» обрабатывать сложные жесты Мало вариантов размещения элементов

Не умеет «из коробки» обрабатывать сложные жесты
Мало вариантов размещения элементов
Тяжело делать

красивые анимации

ListView. Недостатки

4/44

Слайд 30

tinkoff.ru

tinkoff.ru

Слайд 31

RecyclerView tinkoff.ru

RecyclerView

tinkoff.ru

Слайд 32

Решает проблемы ListView Состоит из компонент Большие возможности RecyclerView 4/44

Решает проблемы ListView
Состоит из компонент
Большие возможности

RecyclerView

4/44

Слайд 33

LayoutManager Adapter Компоненты RecyclerView 4/44 Основные ItemDecorator ItemTouchHelper ItemAnimator RecycledViewPool Вспомогательные

LayoutManager
Adapter

Компоненты RecyclerView

4/44

Основные

ItemDecorator
ItemTouchHelper
ItemAnimator
RecycledViewPool

Вспомогательные

Слайд 34

RecyclerView.Adapter tinkoff.ru

RecyclerView.Adapter

tinkoff.ru

Слайд 35

RecyclerView.Adapter API 4/44

RecyclerView.Adapter API

4/44

Слайд 36

Создание элемента RecyclerView.Adapter API 4/44

Создание элемента

RecyclerView.Adapter API

4/44

Слайд 37

Создание элемента Количество элементов RecyclerView.Adapter API 4/44

Создание элемента
Количество элементов

RecyclerView.Adapter API

4/44

Слайд 38

Создание элемента Количество элементов Наполнение элемента данными RecyclerView.Adapter API 4/44

Создание элемента
Количество элементов
Наполнение элемента данными

RecyclerView.Adapter API

4/44

Слайд 39

Создание элемента Количество элементов Наполнение элемента данными Тип элемента (опционально) RecyclerView.Adapter API 4/44

Создание элемента
Количество элементов
Наполнение элемента данными
Тип элемента (опционально)

RecyclerView.Adapter API

4/44

Слайд 40

RecyclerView.Adapter 3/44

RecyclerView.Adapter

3/44

Слайд 41

RecyclerView.Adapter 3/44

RecyclerView.Adapter

3/44

Слайд 42

RecyclerView.Adapter 3/44

RecyclerView.Adapter

3/44

Слайд 43

RecyclerView.Adapter 3/44

RecyclerView.Adapter

3/44

Слайд 44

RecyclerView.ViewHolder 3/44

RecyclerView.ViewHolder

3/44

Слайд 45

Хранит View элемента списка (holder.itemView) Позиция элемента Свойства переиспользуемости (holder.isRecycleable) itemId RecyclerView.ViewHolder 4/44

Хранит View элемента списка (holder.itemView)
Позиция элемента
Свойства переиспользуемости (holder.isRecycleable)
itemId

RecyclerView.ViewHolder

4/44

Слайд 46

Notify* Api tinkoff.ru

Notify* Api

tinkoff.ru

Слайд 47

Уведомляет RecyclerView об изменении данных RecyclerView.Adapter NotifyApi 4/44

Уведомляет RecyclerView об изменении данных

RecyclerView.Adapter NotifyApi

4/44

Слайд 48

Уведомляет RecyclerView об изменении данных notifyDataSetChanged() RecyclerView.Adapter NotifyApi 4/44

Уведомляет RecyclerView об изменении данных
notifyDataSetChanged()

RecyclerView.Adapter NotifyApi

4/44

Слайд 49

Уведомляет RecyclerView об изменении данных notifyDataSetChanged() RecyclerView.Adapter NotifyApi 4/44

Уведомляет RecyclerView об изменении данных
notifyDataSetChanged()

RecyclerView.Adapter NotifyApi

4/44

Слайд 50

Уведомляет RecyclerView об изменении данных notifyDataSetChanged() notifyItemChanged(), notifyItemRemoved(), notifyItemInsterted(), notifyItemMoved() RecyclerView.Adapter NotifyApi 4/44

Уведомляет RecyclerView об изменении данных
notifyDataSetChanged()
notifyItemChanged(), notifyItemRemoved(), notifyItemInsterted(), notifyItemMoved()

RecyclerView.Adapter NotifyApi

4/44

Слайд 51

RecyclerView.Adapter NotifyApi 4/44 Красивая анимация при удалении элемента notifyItemRemoved(index: Int)

RecyclerView.Adapter NotifyApi

4/44

Красивая анимация при удалении элемента
notifyItemRemoved(index: Int)

Слайд 52

Красивая анимация Меньше созданий и заполнений ViewHolder’ов Используйте notifyDataSetChanged в крайнем случае RecyclerView.Adapter NotifyApi 4/44

Красивая анимация
Меньше созданий и заполнений ViewHolder’ов
Используйте notifyDataSetChanged в крайнем случае

RecyclerView.Adapter NotifyApi

4/44

Слайд 53

RecyclerView.Adapter NotifyApi 4/44 Анимации изменения нет notifyDataSetChanged()

RecyclerView.Adapter NotifyApi

4/44

Анимации изменения нет
notifyDataSetChanged()

Слайд 54

Элемент ассоциирован с уникальным идентификатором Adapter.getItemId(default = NO_ID) RecyclerView.Adapter StableIDs 4/44

Элемент ассоциирован с уникальным идентификатором
Adapter.getItemId(default = NO_ID)

RecyclerView.Adapter StableIDs

4/44

Слайд 55

RecyclerView.Adapter StableIDs 4/44 Красивая анимация при удалении элемента notifyDataSetChanged()

RecyclerView.Adapter StableIDs

4/44

Красивая анимация при удалении элемента
notifyDataSetChanged()

Слайд 56

Элементы не пересоздаются без необходимости Элементы анимируются даже при вызове notifyDataSetChanged()! Преимущества setHasStableIds(true) 4/44

Элементы не пересоздаются без необходимости
Элементы анимируются даже при вызове notifyDataSetChanged()!

Преимущества setHasStableIds(true)


4/44

Слайд 57

Payloads 4/44

Payloads

4/44

Слайд 58

Данные для частичного обновления элемента Payloads 4/44

Данные для частичного обновления элемента

Payloads

4/44

Слайд 59

Данные для частичного обновления элемента Уведомление об изменении элемента с данными Payloads 4/44

Данные для частичного обновления элемента
Уведомление об изменении элемента с данными

Payloads

4/44

Слайд 60

Данные для частичного обновления элемента Уведомление об изменении элемента с данными Обработка payload Payloads 4/44

Данные для частичного обновления элемента
Уведомление об изменении элемента с данными
Обработка payload

Payloads

4/44

Слайд 61

Payloads 4/44

Payloads

4/44

Слайд 62

RecyclerView.ViewHolder Lifecycle 4/44

RecyclerView.ViewHolder Lifecycle

4/44

Слайд 63

RecyclerView.ViewHolder Lifecycle 4/44 Элемент появляется на экране

RecyclerView.ViewHolder Lifecycle

4/44

Элемент появляется на экране

Слайд 64

RecyclerView.ViewHolder Lifecycle 4/44 Элемент появляется на экране Элемент ушел с экрана

RecyclerView.ViewHolder Lifecycle

4/44

Элемент появляется на экране
Элемент ушел с экрана

Слайд 65

RecyclerView.ViewHolder Lifecycle 4/44 Элемент появляется на экране Элемент ушел с экрана Элемент сейчас будет переиспользован

RecyclerView.ViewHolder Lifecycle

4/44

Элемент появляется на экране
Элемент ушел с экрана
Элемент сейчас будет переиспользован

Слайд 66

ViewHolder Notify* Api Payloads Lifecycle Резюме 4/44

ViewHolder
Notify* Api
Payloads
Lifecycle

Резюме

4/44

Слайд 67

LayoutManager tinkoff.ru

LayoutManager

tinkoff.ru

Слайд 68

LayoutManager 4/44

LayoutManager

4/44

Слайд 69

Размещение элементов LayoutManager 4/44

Размещение элементов

LayoutManager

4/44

Слайд 70

Размещение элементов Скроллинг LayoutManager 4/44

Размещение элементов
Скроллинг

LayoutManager

4/44

Слайд 71

Размещение элементов Скроллинг Accessibility LayoutManager 4/44

Размещение элементов
Скроллинг
Accessibility

LayoutManager

4/44

Слайд 72

Размещение элементов Скроллинг Accessibility Фокусировка LayoutManager 4/44

Размещение элементов
Скроллинг
Accessibility
Фокусировка

LayoutManager

4/44

Слайд 73

LinearLayoutManager 4/44

LinearLayoutManager

4/44

Слайд 74

GridLayoutManager 4/44

GridLayoutManager

4/44

Слайд 75

GridLayoutManager 4/44

GridLayoutManager

4/44

Слайд 76

LinearLayoutManager 4/44

LinearLayoutManager

4/44

Слайд 77

ItemAnimator tinkoff.ru

ItemAnimator

tinkoff.ru

Слайд 78

Работает со стандартными LayoutManager’ами Поддерживает простые анимации для нестандартных Основа для кастомных аниматоров DefaultItemAnimator 4/44

Работает со стандартными LayoutManager’ами
Поддерживает простые анимации для нестандартных
Основа для кастомных аниматоров

DefaultItemAnimator

4/44

Слайд 79

Fade In & Fade Out Cross-fade Translate Анимации по умолчанию 4/44

Fade In & Fade Out
Cross-fade
Translate

Анимации по умолчанию

4/44

Слайд 80

ItemDecorator tinkoff.ru

ItemDecorator

tinkoff.ru

Слайд 81

Добавление отступов Рисование позади и поверх элемента Можно добавлять несколько декораторов ItemDecorator 4/44

Добавление отступов
Рисование позади и поверх элемента
Можно добавлять несколько декораторов

ItemDecorator

4/44

Слайд 82

Добавление отступов 4/44

Добавление отступов

4/44

Слайд 83

Добавление отступов 4/44

Добавление отступов

4/44

Слайд 84

Добавление отступов 4/44

Добавление отступов

4/44

Слайд 85

Добавление отступов 4/44

Добавление отступов

4/44

Слайд 86

Добавление отступов 4/44

Добавление отступов

4/44

Слайд 87

Реальное 4/44

Реальное

4/44

Слайд 88

Рисование позади элемента 4/44

Рисование позади элемента

4/44

Слайд 89

Рисование позади элемента 4/44

Рисование позади элемента

4/44

Слайд 90

Рисование позади элемента 4/44

Рисование позади элемента

4/44

Слайд 91

Рисование позади элемента 4/44

Рисование позади элемента

4/44

Слайд 92

Рисование позади элемента 4/44

Рисование позади элемента

4/44

Слайд 93

Рисование поверх элемента 4/44

Рисование поверх элемента

4/44

Слайд 94

Рисование поверх элемента 4/44

Рисование поверх элемента

4/44

Слайд 95

Рисование поверх элемента 4/44

Рисование поверх элемента

4/44

Слайд 96

Рисование поверх элемента 4/44

Рисование поверх элемента

4/44

Слайд 97

Рисование поверх элемента 4/44

Рисование поверх элемента

4/44

Слайд 98

Рисование поверх элемента 4/44

Рисование поверх элемента

4/44

Слайд 99

Рисование поверх элемента 4/44

Рисование поверх элемента

4/44

Слайд 100

Ошибки 4/44

Ошибки

4/44

Слайд 101

Ошибки 4/44

Ошибки

4/44

Слайд 102

Ошибки 4/44

Ошибки

4/44

Слайд 103

getAdapterPosition vs getLayoutPosition 4/44

getAdapterPosition vs getLayoutPosition

4/44

Слайд 104

getAdapterPosition vs getLayoutPosition 4/44 move(0, 3)

getAdapterPosition vs getLayoutPosition

4/44

move(0, 3)

Слайд 105

getAdapterPosition vs getLayoutPosition 4/44 move(0, 3)

getAdapterPosition vs getLayoutPosition

4/44

move(0, 3)

Слайд 106

getAdapterPosition vs getLayoutPosition 4/44 move(0, 3) onLayout()

getAdapterPosition vs getLayoutPosition

4/44

move(0, 3)

onLayout()

Слайд 107

getAdapterPosition vs getLayoutPosition 4/44 move(0, 3) onLayout()

getAdapterPosition vs getLayoutPosition

4/44

move(0, 3)

onLayout()

Слайд 108

getAdapterPosition() при работе с данными getLayoutPosition() при работе с отрисовкой RecyclerView.ViewHolder Position 4/44

getAdapterPosition() при работе с данными
getLayoutPosition() при работе с отрисовкой

RecyclerView.ViewHolder Position

4/44

Слайд 109

Не выделяйте память (те же правила, что и в onDraw) Не

Не выделяйте память (те же правила, что и в onDraw)
Не взаимодействуйте

с адаптером
Для разделителей используйте DividerItemDecoration

Советы

4/44

Слайд 110

ItemTouchHelper tinkoff.ru

ItemTouchHelper

tinkoff.ru

Слайд 111

ItemTouchHelper Drag and Drop Swipe to dismiss

ItemTouchHelper

Drag and Drop
Swipe to dismiss

Слайд 112

ItemTouchHelper 3/44

ItemTouchHelper

3/44

Слайд 113

ItemTouchHelper 3/44

ItemTouchHelper

3/44

Слайд 114

ItemTouchHelper 3/44

ItemTouchHelper

3/44

Слайд 115

ItemTouchHelper 3/44

ItemTouchHelper

3/44

Слайд 116

ItemTouchHelper 3/44

ItemTouchHelper

3/44

Слайд 117

ItemTouchHelper 3/44

ItemTouchHelper

3/44

Слайд 118

ItemTouchHelper 3/44

ItemTouchHelper

3/44

Слайд 119

SimpleCallback 3/44

SimpleCallback

3/44

Слайд 120

SimpleCallback 3/44

SimpleCallback

3/44

Слайд 121

SimpleCallback 3/44

SimpleCallback

3/44

Слайд 122

Настройка отрисовки 3/44

Настройка отрисовки

3/44

Слайд 123

Настройка отрисовки 3/44

Настройка отрисовки

3/44

Слайд 124

Настройка отрисовки 3/44

Настройка отрисовки

3/44

Слайд 125

Настройка отрисовки 3/44

Настройка отрисовки

3/44

Слайд 126

Настройка отрисовки 3/44

Настройка отрисовки

3/44

Слайд 127

Настройка отрисовки 3/44

Настройка отрисовки

3/44

Слайд 128

Настройка отрисовки 3/44

Настройка отрисовки

3/44

Слайд 129

Настройка отрисовки 3/44

Настройка отрисовки

3/44

Слайд 130

Настройка отрисовки 3/44

Настройка отрисовки

3/44

Слайд 131

Swipe to dismiss & Drag and Drop Поддержка любого LayoutManager’а Гибкая настройка ItemTouchHelper 4/44

Swipe to dismiss & Drag and Drop
Поддержка любого LayoutManager’а
Гибкая настройка

ItemTouchHelper

4/44

Слайд 132

RecycledViewPool tinkoff.ru

RecycledViewPool

tinkoff.ru

Слайд 133

Хранит переиспользуемые ViewHolder’ы RecycledViewPool 4/44

Хранит переиспользуемые ViewHolder’ы

RecycledViewPool

4/44

Слайд 134

Хранит переиспользуемые ViewHolder’ы По умолчанию имеет размер 5 элементов RecycledViewPool 4/44

Хранит переиспользуемые ViewHolder’ы
По умолчанию имеет размер 5 элементов

RecycledViewPool

4/44

Слайд 135

Хранит переиспользуемые ViewHolder’ы По умолчанию имеет размер 5 элементов Может переиспользоваться различными Recycler’ами RecycledViewPool 4/44

Хранит переиспользуемые ViewHolder’ы
По умолчанию имеет размер 5 элементов
Может переиспользоваться различными Recycler’ами

RecycledViewPool

4/44

Слайд 136

RecycledViewPool Переиспользуем вьюхолдеры для двух ресайклеров

RecycledViewPool

Переиспользуем вьюхолдеры для двух ресайклеров

Слайд 137

RecyclerView. Итоги tinkoff.ru

RecyclerView. Итоги

tinkoff.ru

Слайд 138

LayoutManager Adapter Компоненты RecyclerView 4/44 Основные

LayoutManager
Adapter

Компоненты RecyclerView

4/44

Основные

Слайд 139

LayoutManager Adapter Компоненты RecyclerView 4/44 Основные ItemDecorator ItemTouchHelper ItemAnimator RecycledViewPool Вспомогательные

LayoutManager
Adapter

Компоненты RecyclerView

4/44

Основные

ItemDecorator
ItemTouchHelper
ItemAnimator
RecycledViewPool

Вспомогательные

Слайд 140

Обзор ошибок и советы tinkoff.ru

Обзор ошибок и советы

tinkoff.ru

Слайд 141

Обработка нажатий 4/44

Обработка нажатий

4/44

Слайд 142

Обработка нажатий 4/44

Обработка нажатий

4/44

Слайд 143

Обработка нажатий 4/44

Обработка нажатий

4/44

Слайд 144

Устанавливаем флаг, если размер списка не зависит от количества элементов 2

Устанавливаем флаг, если размер списка не зависит от количества элементов
2 вызова

onLayout() вместо 3’х

setHasFixedSize(true)

4/44

Слайд 145

DiffUtils tinkoff.ru

DiffUtils

tinkoff.ru

Слайд 146

Позволяет не вызывать руками notifyItem… Сравнивает 2 списка: старый и новый Может работать асинхронно DiffUtil 4/44

Позволяет не вызывать руками notifyItem…
Сравнивает 2 списка: старый и новый
Может работать

асинхронно

DiffUtil

4/44

Слайд 147

DiffUtil 4/44

DiffUtil

4/44

Слайд 148

DiffUtil 4/44

DiffUtil

4/44

Слайд 149

DiffUtil 4/44

DiffUtil

4/44

Слайд 150

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

Слайд 151

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool getViewForPosition

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

getViewForPosition

Слайд 152

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool getViewForPosition getViewForPosition

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

getViewForPosition

getViewForPosition

Слайд 153

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool getViewForPosition getViewForPosition

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

getViewForPosition

getViewForPosition

Слайд 154

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool getViewForPosition getViewForPosition

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

getViewForPosition

getViewForPosition

Слайд 155

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool getViewForPosition getViewForPosition getViewType

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

getViewForPosition

getViewForPosition

getViewType

Слайд 156

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool getViewForPosition getViewForPosition getViewType

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

getViewForPosition

getViewForPosition

getViewType

Слайд 157

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool getViewForPosition getViewForPosition getViewType getViewHolderByType

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

getViewForPosition

getViewForPosition

getViewType

getViewHolderByType

Слайд 158

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool getViewForPosition getViewForPosition getViewType getViewHolderByType

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

getViewForPosition

getViewForPosition

getViewType

getViewHolderByType

Слайд 159

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool getViewForPosition getViewForPosition getViewType getViewHolderByType createViewHolder

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

getViewForPosition

getViewForPosition

getViewType

getViewHolderByType

createViewHolder

Слайд 160

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool getViewForPosition getViewForPosition getViewHolderByType

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

getViewForPosition

getViewForPosition

getViewHolderByType

Слайд 161

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool getViewForPosition getViewForPosition bindViewHolder getViewHolderByType

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

getViewForPosition

getViewForPosition

bindViewHolder

getViewHolderByType

Слайд 162

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool getViewForPosition getViewForPosition bindViewHolder getViewHolderByType

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

getViewForPosition

getViewForPosition

bindViewHolder

getViewHolderByType

Слайд 163

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

Слайд 164

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool addView

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

addView

Слайд 165

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool addView onViewAttachedToWindow

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

addView

onViewAttachedToWindow

Слайд 166

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

Слайд 167

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool removeAndRecycleView

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

removeAndRecycleView

Слайд 168

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool removeAndRecycleView onViewDetachedFromWindow

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

removeAndRecycleView

onViewDetachedFromWindow

Слайд 169

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool removeAndRecycleView

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

removeAndRecycleView

Слайд 170

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool removeAndRecycleView isValid?

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

removeAndRecycleView

isValid?

Слайд 171

RecyclerView.ViewHolder 4/44 LayoutManager RecyclerView Cache Adapter RecycledPool removeAndRecycleView isValid? recycle

RecyclerView.ViewHolder

4/44

LayoutManager

RecyclerView

Cache

Adapter

RecycledPool

removeAndRecycleView

isValid?

recycle