RecyclerView. Компоненты RecyclerView
1. RecyclerView
2.
3.
ScrollView4.
RecyclerView5. Компоненты 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
LayoutManager
Cache
Recycler
View
Adapter
Recycler
Pool
16.
Жизнь ViewHolderLayout
Manager
Cache
Recycler
View
getViewType
bindViewHolder
Adapter
Recycler
Pool
17.
Жизнь ViewHolderLayout
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&DropSwipe to dismiss
24. Drag&Drop
Drag&Drop25. 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)