tgoop.com/android_live/472
Last Update:
ββΠΠ°ΠΊ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ RecyclerView?
#ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ #recyclerview
ΠΠΈ Π΄Π»Ρ ΠΊΠΎΠ³ΠΎ Π½Π΅ ΡΠ΅ΠΊΡΠ΅Ρ, ΡΡΠΎ ΡΠ΅Π³ΠΎΠ΄Π½Ρ RecyclerView
β ΡΡΠΎ Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΏΠΎΠΊΠ°Π·Π° ΡΠΏΠΈΡΠΊΠΎΠ² Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
. Π ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π» ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΠ»Π°Π²Π½ΠΎ.
ΠΠ²ΡΠΎΡ ΡΡΠ°ΡΡΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ:
πΈΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. Garbage collector ΠΌΠΎΠ³ Π±Ρ Π±ΡΡΡ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ Π½Π΅ΠΎΡΠ²Π΅ΡΠ°ΡΡΠ΅Π³ΠΎ UI, Π΅ΡΠ»ΠΈ Π±Ρ Π½Π΅ bitmap pool, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΡΡΠΎΠ΅Π½ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠΌΠ°Ρ, ΡΡΠΎ ΠΌΠ°Π»ΠΎ ΠΊΡΠΎ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΏΡΡΠ°Π΅ΡΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΠΊΠ°Π·ΠΎΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π²ΡΡΡΠ½ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡΠ΅ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌ.
πΈΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠΈΡΠΈΠ½Ρ ΠΈ Π²ΡΡΠΎΡΡ Π΄Π»Ρ ImageView. ΠΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΡΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈΠΌΠ΅ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΡΠΈΠ½Ρ ΠΈ Π²ΡΡΠΎΡΡ. ΠΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π±Π΅Π· ΡΡΡΡΠ° ΡΡΠΈΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΡΠΎ ΠΏΡΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Β«ΠΌΠΈΠ³Π°Π½ΠΈΠ΅Β» ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. Π§ΡΠΎΠ±Ρ ΡΡΠΎΠ³ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΡΠΈΡΠΈΠ½Ρ ΠΈ Π²ΡΡΠΎΡΡ ΠΈΠ»ΠΈ ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½ Π·Π°ΡΠ°Π½Π΅Π΅, Π΄ΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ.
πΈΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ onBindViewHolder. ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ onBindViewHolder
ΠΈ ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ Π΅Π³ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΈΠΌ. ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ Π΄Π°ΡΡ ΠΏΡΠΈΡΠΎΡΡ ΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ RecyclerView
πΈΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ DiffUtil. ΠΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π°Π΄Π°ΠΏΡΠ΅ΡΠ° ΡΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ DiffUtil. ΠΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΡΠΌ, Π° Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° (notifyDataSetChanged
). ΠΡΡΠ°ΡΠΈ, Π΅ΡΠ»ΠΈ Ρ
ΠΎΡΠΈΡΠ΅ Π΅ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΉ DiffUtil Π½Π° coroutines. Π‘ΡΡΠ»ΠΊΠ° Ρ Π΄Π΅ΡΠ°Π»ΡΠΌΠΈ ΡΡΡ.
πΈΠΈΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ
view. ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΅ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΊΡΠΈΡΠΈΡΠ½ΡΠΌ Π² RecyclerView. ΠΠΎΠ±Π°Π²Π»Ρ, ΡΡΠΎ ΡΡΡ Π²Π°ΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° layout, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π΅ΡΠ° Π΄Π»Ρ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ.
πΈΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ setHasFixedSize. ΠΡΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π²Π°ΡΠ΅Π³ΠΎ RecyclerView ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΡΠΈΠ½Ρ ΠΈ Π²ΡΡΠΎΡΡ, ΡΠΎ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΠ»ΡΡΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΏΠΈΡΠΊΠ°.
πΈΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ RecyclerViewPool. ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Ρ
ΠΎΡΠΎΡΠ΅ΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ RecyclerViewPool
ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² ΡΡΠ°ΡΡΠ΅.
πΈΠΏΠΎΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ Ρ setItemViewCacheSize. ΠΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ, ΡΡΠΎ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ViewHolder
, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΡ
Π² RecyclerViewPool
. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΡΡΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ViewHolder
, Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΡ
Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΈ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠ² onBindViewHolder
.
Π ΡΡΠΎ Π²Ρ Π±Ρ Π΅ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΊ ΡΡΠΎΠΌΡ ΡΠΏΠΈΡΠΊΡ?
BY Android Live π€

Share with your friend now:
tgoop.com/android_live/472