점점 더 복잡해 지는 UI, 특히 RecyclerView나 Pager같은 Adapter가 필요한 뷰들은 군더더기가 많다. 이러한 뷰들을 어떻게 데이터로만 표현할 수 있을까?
- 발표 행사 : DroidKnights 2021
- 원본 Google Slides Link
https://docs.google.com/presentation/d/1pAMlL5vZZXCkei3MXCnb1yq8vCIrJA_95PmD7lu0O1E/edit?usp=sharing
- 발표 영상 Link
https://youtu.be/mqY3GWid7ug
- Antonio Github Link
https://github.com/naverz/Antonio
(원본 Google Slides로 보시는 것을 추천드립니다.)
2. 점점 고도화 되는 UX/UI
Why?
01 Adapter 편
데이터로 표현까지의 여정
02
03 List state in
Compose
04
복잡한 RecyclerView, 군더더기 없이 데이터로 표현 하기
ViewHolder, State 편
데이터로 표현까지의 여정
17. 뷰타입 기준으로 모델과 뷰홀더를 맵핑
ViewType
view_holder_content_small.xml
중복된 구현의 어댑터를 줄이기
Typed Model ViewHolder
Dependency
18. 뷰타입 기준으로 Mapping 된 뷰홀더 찾아와 구현
Layout Id
Model
Adapter
Layout Id
Model
Layout Id
Model
Layout Id
Model
Layout Id
Model
View
Dependency
Builder Map
View type
View Dependency
Builder
getItemViewType
onCreateViewHolder
View type
중복된 구현의 어댑터를 줄이기
View type
ViewHolder
20. Adapter
Layout Id
Model
Layout Id
Model
Layout Id
Model
Layout Id
Model
View
Dependency
Builder Map
View type
View Dependency Builder
getItemViewType
onCreateViewHolder
View type
중복된 구현의 어댑터를 줄이기
25. 데이터 바인딩으로 뷰홀더 구현 없애기
1st, Pager
XML
ViewHolder
XML
XML
ViewHolder
ViewHolder
2nd,
RecyclerView
Adapter
뷰홀더의 구현을 줄일수는
없을까?
1st, Pager
XML
ViewHolder
XML
XML
ViewHolder
ViewHolder
2nd,
RecyclerView
28. 뷰홀더 구현을 공통화 하기 위해서는?
뷰홀더가 만들어질때 주입될
기타 데이터들의 Variable
(onCreateViewHolder)
뷰홀더에 바인딩 될
XML Variable
(onBindViewHolder)
view_holder_content_small.xml
해당 XML 레이아웃 ID
데이터 바인딩으로 뷰홀더 구현 없애기
29. 뷰홀더 구현을 공통화 하기 위해서는?
view_holder_content_small.xml
데이터 바인딩으로 뷰홀더 구현 없애기
39. 데이터 바인딩으로 뷰홀더 구현 없애기
Adapter
Layout Id
Model
Layout Id
Model
Layout Id
Model
Layout Id
Model
View
Dependency
Builder Map
View type
View Dependency
Builder
getItemViewType
onCreateViewHolder
View type
40. 데이터 바인딩으로 뷰홀더 구현 없애기
view_holder_content_small.xml
+
71. List state and Compose
지켜보고 있다...
Events
Lazy composable
List<Item>
Data
72. List state and Compose
Adapter XML
XML
XML
RecyclerView
ViewHolder
ViewHolder
ViewHolder
Lazy
Composable
ViewHolder
ViewHolder
Child
Composable
73. List state and Compose
List<Item> RecyclerView
Data
● DiffUtil
● Adapter(ListAdapter)
● ViewHolder
● Payloads
● ViewType
● Notify...
● ...
Lazy Composable
데이터의 변경