RecyclerView
Компоненты RecyclerView
LayoutManager
LayoutManager
LayoutManager
Adapter
Основное API Adapter
Методы notifyItemX
Польза от методов notifyItemX
ViewHolder
Для чего нужен ViewHolder?
Жизнь ViewHolder
Смерть ViewHolder
ItemDecorator
ItemDecorator
ItemDecorator
API ItemDecorator’а
ItemTouchHelper
Drag&Drop
Swipe to dismiss
API ItemTouchHelper
6.85M
Category: informaticsinformatics

RecyclerView. Компоненты RecyclerView

1. RecyclerView

2.

3.

ScrollView

4.

RecyclerView

5. Компоненты RecyclerView

LayoutManager - размещает элементы
ItemAnimator - анимирует элементы
Adapter - создает элементы
Decorator - дорисовывает элементы
ViewHolder - кеширует findViewById

6. LayoutManager

Обязанности LayoutManager’а:
размещает элементы
отвечает за размер элементов
отвечает за то, какие элементы больше не нужны
отвечает за скроллинг
отвечает за View Focusing т.е. на каком элементе
сфокусироваться

7. LayoutManager

LinearLayoutManager (линейное
размещение элементов)
GridLayoutManager (табличное)
StaggeredGridLayoutManager (сложное)

8. LayoutManager

9. Adapter

Обязанности Adapter’а:
создание ViewHolder’ов
заполнение ViewHolder’ов информацией
уведомление RecyclerView о том какие элементы
изменились
обработка касаний
частичное обновление данных
управление количеством ViewType’ов

10. Основное API Adapter

public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
public void onBindViewHolder(ViewHolder holder, int position)
public int getItemCount()

11. Методы notifyItemX

notifyDataSetChanged()
notifyItemChanged()
notifyItemInserted()
notifyItemMoved()
notifyItemRemoved()
notifyItemRangeChanged()
notifyItemRangeInserted()
notifyItemRangeRemoved()

12. Польза от методов notifyItemX

Нет лишних вызовов onBindViewHolder();
Возможность анимировать и перемещать
элементы как угодно
Нет лишних вызовов onCreateViewHolder()

13. ViewHolder

14. Для чего нужен ViewHolder?

Кеширование относительно дорогого
findViewById
Основной элемент Recycling’а

15. Жизнь ViewHolder

Layout
Manager
Cache
Recycler
View
Adapter
Recycler
Pool

16.

Жизнь ViewHolder
Layout
Manager
Cache
Recycler
View
getViewType
bindViewHolder
Adapter
Recycler
Pool

17.

Жизнь ViewHolder
Layout
Manager
Cache
Recycler
View
createViewHolder
bindViewHolder
Adapter
Recycler
Pool

18. Смерть ViewHolder

Есть ли место для
еще одного VH типа X
Recycler
View
addViewToPool
Recycler
Pool
no
Смерть
ViewHolder

19. ItemDecorator

ItemDecorator - дополняет представление в зависимости от
какой-либо логики
Для чего применяется:
добавление разделителей и отступов
выделение элементов списка
рисование любого контента за и перед view

20. ItemDecorator

21. ItemDecorator

22. API ItemDecorator’а

public void getItemOffsets(Rect outRect,
View view,
RecyclerView parent,
RecyclerView.State state)
public void onDraw(Canvas canvas,
RecyclerView parent,
RecyclerView.State state)
public void onDrawOver(Canvas c,
RecyclerView parent,
RecyclerView.State state)

23. ItemTouchHelper

Drag&Drop
Swipe to dismiss

24. Drag&Drop

Drag&Drop

25. Swipe to dismiss

26. API ItemTouchHelper

public int getMovementFlags(RecyclerView recyclerView,
RecyclerView.ViewHolder viewHolder)
public boolean onMove(RecyclerView recyclerView,
RecyclerView.ViewHolder viewHolder,
RecyclerView.ViewHolder target)
public void onSwiped(RecyclerView.ViewHolder viewHolder,
int direction)
English     Русский Rules