package Ġcom . br ins . ric ew e ather . ui . adapter Ċ Ċ import Ġandroidx . collection . Sparse Array Compat Ċ Ċ class ĠItem View Delegate Manager < T > Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġdeleg ates : ĠSparse Array Compat < Item View Delegate < T >> Ġ= ĠSparse Array Compat () ĊĊĠĠĠ Ġfun ĠgetItem View Delegate Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeleg ates . size () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Delegate ( delegate : ĠItem View Delegate < T >? ): ĠItem View Delegate Manager < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġview Type Ġ= Ġdeleg ates . size () ĊĠĠĠĠĠĠĠ Ġif Ġ( delegate Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeleg ates . put ( view Type , Ġdelegate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Type ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Delegate ( view Type : ĠInt , Ġdelegate : ĠItem View Delegate < T >): ĠItem View Delegate Manager < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( deleg ates . get ( view Type ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" An ĠItem View Delegate Ġis Ġalready Ġregistered Ġfor Ġthe Ġview Type Ġ= Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġview Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ". ĠAlready Ġregistered ĠItem View Delegate Ġis Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġdeleg ates . get ( view Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdeleg ates . put ( view Type , Ġdelegate ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Delegate ( delegate : ĠItem View Delegate < T >? ): ĠItem View Delegate Manager < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( delegate Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNullPointerException (" Item View Delegate Ġis Ġnull ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġindex ToRemove Ġ= Ġdeleg ates . indexOf Value ( delegate ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( index ToRemove Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeleg ates . remove At ( index ToRemove ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Delegate ( item Type : ĠInt ): ĠItem View Delegate Manager < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex ToRemove Ġ= Ġdeleg ates . indexOf Key ( item Type ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( index ToRemove Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeleg ates . remove At ( index ToRemove ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetItem ViewType ( item : ĠT , Ġposition : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdeleg ates Count Ġ= Ġdeleg ates . size () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġdeleg ates Count Ġ- Ġ 1 Ġdown To Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelegate Ġ= Ġdeleg ates . value At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( delegate . is For ViewType ( item , Ġposition )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdeleg ates . key At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" No ĠItem View Delegate Ġadded Ġthat Ġmatches Ġposition =$ position Ġin Ġdata Ġsource " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconvert ( holder : ĠViewHolder , Ġitem : ĠT , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdeleg ates Count Ġ= Ġdeleg ates . size () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġdeleg ates Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelegate Ġ= Ġdeleg ates . value At ( i ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( delegate . is For ViewType ( item , Ġposition )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . convert ( holder , Ġitem , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" No ĠItem View Delegate Manager Ġadded Ġthat Ġmatches Ġposition =$ position Ġin Ġdata Ġsource " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun ĠgetItem View Layout Id ( view Type : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeleg ates . get ( view Type ) !!. getItem View Layout Id () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetItem ViewType ( item View Delegate : ĠItem View Delegate < T >): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeleg ates . indexOf Value ( item View Delegate ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetItem View Delegate ( item : ĠT , Ġposition : ĠInt ): ĠItem View Delegate < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdeleg ates Count Ġ= Ġdeleg ates . size () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġdeleg ates Count Ġ- Ġ 1 Ġdown To Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelegate Ġ= Ġdeleg ates . value At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( delegate . is For ViewType ( item , Ġposition )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdelegate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" No ĠItem View Delegate Ġadded Ġthat Ġmatches Ġposition =$ position Ġin Ġdata Ġsource " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetItem View Delegate ( view Type : ĠInt ): ĠItem View Delegate < T >? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdeleg ates . get ( view Type ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetItem View Layout Id ( item : ĠT , Ġposition : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetItem View Delegate ( item , Ġposition ). getItem View Layout Id () ĊĠĠĠ Ġ} Ċ }