рдХреНрдпрд╛ developer.android.com RecyclerView рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реИ

рдкреНрд░рдгрд╛рдо, рдкреНрд░рд┐рдп рд╣рд░рдЬрд┐рддреЗрд▓реА! рдЗрд╕ рдкреЛрд╕реНрдЯ рдиреЗ рдореБрдЭреЗ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ (рдпрд╛ рдмрд▓реНрдХрд┐, рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рддреЗрдЬ рд╕реНрдерд╛рдиреАрдп рддрд╛рдкрдорд╛рди рдХреА рд╡реГрджреНрдзрд┐ рдХреА рднрд╛рд╡рдирд╛ ... рд╣рдореНрдо, рд▓реЛрдЕрд░ рдмреИрдХ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ)ред


рдЪрд▓рд┐рдП рд╢реБрд░реВ рд╕реЗ рд╣реА рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ "рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдФрд░ рд░рд┐рд╕рд╛рдЗрдХреНрд▓рд░рд╡реНрдпреВ рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рдмреАрдЪ рдЖрдо рдХреБрдЫ рд╣реИ" - рдпрд╣ "рдХреБрдЫ" рд╣реИ - рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдХреНрдпреЛрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдкрдврд╝реЗрдВред рдФрд░ рдЗрди рджреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓рддрд╛, рдХрд╛рд░рдг рдХреЗ рд╕рдкрдиреЗ рдХреА рддрд░рд╣, рд░рд╛рдХреНрд╖рд╕реЛрдВ рдХреЛ рдЬрдиреНрдо рджреЗрддреА рд╣реИред рдХреЗрд╡рд▓ рдпрд╣рд╛рдВ, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦрдХ рдиреЗ рдЗрди рд░рд╛рдХреНрд╖рд╕реЛрдВ рд╕реЗ рд▓рдбрд╝рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХреА рд╣реИ, рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрд╕рд╣рдордд рд╣реВрдВред


2 рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред


рд╣рд╛рд▓рдд рдирдВ


рдпрджрд┐ рдЖрдк рдХрд╣реАрдВ рдПрдХ рд╢реНрд░реЛрддрд╛ рдХреЛ рд▓рдЯрдХрд╛рддреЗ рд╣реИрдВ, рддреЛ рдХрд╣реАрдВ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдорддреМрд░ рдкрд░ рд╡реЗ рд╕рдордорд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ - onViewAttachedToWindow рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ, рдЗрд╕реЗ onViewDetachedFromWindow рдкрд░ onViewDetachedFromWindow ред рд╣рдо onBindViewHolder рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рддреЗ рд╣реИрдВ ... рд╣рдо onBindViewHolder рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдХреЙрд▓ рд╕рдордорд┐рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрдИ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред


рдпрджрд┐ рдЖрдк рдореВрд▓ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдХреА рддрд░рд╣ рд╣реИрдВ, рддреЛ рд╕реЛрдЪреЗрдВ: "рд▓реЗрдХрд┐рди рдРрд╕реЗ рдорд╛рдорд▓реЗ рднреА рд╣реИрдВ ... рдЬрдм рд╢реНрд░реЛрддрд╛ ... рд╕реВрдЪреА рдореЗрдВ рддрддреНрд╡ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдСрдирдмрд╛рдЗрдВрдбрд╣реЙрд▓реНрдбрд░ () рд╡рд┐рдзрд┐ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ рдФрд░ onViewAttachedToWindow ()" рдореЗрдВ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИ , рддрдм рдЗрд╕ рдбреНрд░рд╛рдЗрд╡ рдХреЛ рдбреНрд░рд╛рдЗрд╡ рдХрд░реЗрдВред рд╕реЛрдЪрд╛ рдерд╛ред рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рднрд▓реЗ рд╣реА рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдХреЗрд╡рд▓ рддрддреНрд╡ рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрдкрдиреЗ рд╢реНрд░реЛрддрд╛ рдореЗрдВ рдЧрд▓рдд рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рдЙрдард╛рддреЗ рд╣реИрдВред getAdapterPosition рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред


рд╢рд░реНрдд рдирдВрдмрд░ рджреЛ


RecyclerView рдПрдХ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдЪреАрдЬрд╝ рд╣реИред рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ рдФрд░ рднреА рдЬрдЯрд┐рд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдХреВрд▓рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рддрддреНрд╡ рд╕рд╛рдорд╛рдиреНрдп рдкреВрд▓ рдореЗрдВ рд╣реИ рдпрд╛ рдирд╣реАрдВред


рдкрд░рд┐рдгрд╛рдо


рдЗрди рджреЛ рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд, рдЖрдкрдХреЛ viewWasRecycled рдзреНрд╡рдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ viewWasRecycled рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред


рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ?


рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ RecyclerView рдореЗрдВ рдПрдХ рддрддреНрд╡ рдХрд╛ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ 2 "рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА" рд╣реИрдВ- рдХреИрд╢ рдФрд░ рдкреВрд▓ред рдПрдХ рддрддреНрд╡ рдХреИрд╢ рдореЗрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЕрдЧрд░ рдпрд╣ рд╕реНрдХреНрд░реАрди рдХреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рдкрд░реЗ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рд╕рдордп рдлрд┐рд░ рд╕реЗ рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕ рддрддреНрд╡ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдВрдХ рдХрд┐рдП рдмрд┐рдирд╛ (рдпрд╛рдиреА, onBindViewHolder рд╡рд┐рдзрд┐ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ )ред рдпрджрд┐ рдХреИрд╢ рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд╛рд░рдг рд╕реЗ, RecyclerView рдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рд╣рдореЗрдВ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕ рддрддреНрд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдкреВрд▓ рдкрд░ рдЬрд╛рдПрдЧрд╛ (рдпрд╣рд╛рдВ onViewRecycled рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛)ред рдкреВрд▓ рд╕реЗ рдмрд░рд╛рдордж рдЖрдЗрдЯрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ (рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдмрджрд▓ рдЧрдИ рд╣реИ), рдФрд░ рд╣рдореЗрдВ рдПрдХ onBindViewHolder рдХреЙрд▓ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рддрддреНрд╡ рдиреЗ рдкреВрд▓ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдирдпрд╛ рддрддреНрд╡ рдкреВрд░реЗ рдЪрдХреНрд░ рд╕реЗ onBindViewHolder - onBindViewHolder , onViewAttachedToWindow , onViewAttachedToWindow ред


рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП 3 рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:


  • рдкрд╣рд▓реЗ рдХреЛрдИ рддрддреНрд╡ рдирд╣реАрдВ рдерд╛: рд╣рдо рдмрдирд╛рддреЗ рд╣реИрдВ, рд╣рдо рджреЗрддреЗ рд╣реИрдВ, рд╣рдо рджреЗрддреЗ рд╣реИрдВ;
  • рдЖрдЗрдЯрдо рдкреВрд▓ рдореЗрдВ рдерд╛: рдмрд╛рдБрдз, рд╕рдВрд▓рдЧреНрди;
  • рдЖрдЗрдЯрдо рдХреИрд╢ рдореЗрдВ рдерд╛: рдмрд╕ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВред

рдХрд╣рд╛рдВ рдФрд░ рдХреИрд╕реЗ?


рдХрд┐рд╕реА рддрддреНрд╡ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдФрд░ рдХрд┐рди рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ?


  • onCreateViewHolder ред рдмрдирд╛рдПрдБ, рд╣рдореНрдо, ViewHolder ред рдХрд┐рд╕реА рд╢реНрд░реЛрддрд╛ рдХреЛ рдмрд╛рдВрдзрдиреЗ, рдЙрд╕реЗ рд╕рд╛рдордЧреНрд░реА рдЖрджрд┐ рд╕реЗ рднрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдмрд╕ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрдирд╛рдПрдВред
  • onBindViewHolder рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрд╛рдзреНрдп рдХрд░рддреЗ рд╣реИрдВ - рдкрд╛рда, рдЪрд┐рддреНрд░ред position рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рд╡рд┐рдзрд┐ рдореЗрдВ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рд╣рдо рдЗрд╕реЗ рд╕рд╣реЗрдЬрддреЗ рдирд╣реАрдВ рд╣реИрдВ, рд╣рдо рдЗрд╕реЗ рдХреНрд▓реЛрдЬрд░ рдореЗрдВ рдирд╣реАрдВ рднреЗрдЬрддреЗ рд╣реИрдВ, рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпрджрд┐ рдбреЗрдЯрд╛ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд┐рдзрд┐ рдлрд┐рд░ рд╕реЗ рдХреЙрд▓ рдХреА рдЬрд╛рдПрдЧреА (рдФрд░ рдпрд╣ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдХреЗрд╡рд▓ рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЧрдИ рд╣реИ)ред рдореИрдВ рдпрд╣рд╛рдБ рдПрдХ рд╢реНрд░реЛрддрд╛ рдХреЛ рднреА рдирд╣реАрдВ рд▓рдЯрдХрд╛рддрд╛ - рд╕рдорд░реВрдкрддрд╛ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдПред
  • onViewAttachedToWindow ред рддрддреНрд╡ рдЕрдм рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ - рдПрдХ рд╢реНрд░реЛрддрд╛ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдХреНрд╖рдгред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЕрдЧрд░ рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдПрдХ рддрддреНрд╡ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ getAdapterPosition рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
  • onViewDetachedFromWindow ред рдЖрдЗрдЯрдо рдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрд╕рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╕реБрдирдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рд╣рдЯрд╛рдУред
  • onViewRecycled ред рдЖрдЗрдЯрдо рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рдирд░рдХ рдкреВрд▓ред рдпрд╣рд╛рдВ рдЖрдк рднрд╛рд░реА рд╕рдВрд╕рд╛рдзрди (рдХреИрд╢реНрдб рдЪрд┐рддреНрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдореБрдХреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рддрддреНрд╡ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рддреЛ, тАЛтАЛрд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдПрдХ рдЕрд▓рдЧ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдПред

рд╡рд╣ рд╕рдм рдорд╛рд▓реВрдо рд╣реЛрддрд╛ рд╣реИред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХреБрдЫ рднреА рднреВрд▓ рдирд╣реАрдВ рдЧрдпрд╛ рдпрд╛ рдХреБрдЫ рднреА рдорд┐рд▓рд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреБрдЫ рднреА, рдЕрдкрдиреА рдирд╛рдХ рдкреНрд░рд╣рд╛рд░ рдХрд░реЗрдВ, рддреЛ рд╢рд░реНрдорд┐рдВрджрд╛ рдордд рд╣реЛред

Source: https://habr.com/ru/post/hi430812/


All Articles