package Ġcom . sg or in ov . ex ile helper . currency _ feature . presentation . adapters Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . Async List Differ Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . sg or in ov . ex ile helper . currency _ feature . R Ċ import Ġcom . sg or in ov . ex ile helper . currency _ feature . databinding . Currency Result Item Binding Ċ import Ġcom . sg or in ov . ex ile helper . currency _ feature . presentation . models . Currency Result View Item Ċ import Ġcom . squareup . pic asso . Pic asso Ċ Ċ internal Ġclass ĠCurrency Result Adapter Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdiff Util Callback Ġ= Ġobject Ġ: ĠDiff Util . Item Callback < Currency Result View Item ?> () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠCurrency Result View Item , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Item : ĠCurrency Result View Item ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . account Name Ġ== Ġnew Item . account Name Ġ&& Ġold Item . pay Ġ== Ġnew Item . pay ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠCurrency Result View Item , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Item : ĠCurrency Result View Item ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġasync Differ Ġ= ĠAsync List Differ ( this , Ġdiff Util Callback ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( view Type Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLoader ViewHolder ( in flater . inflate ( R . layout . result _ loading , Ġparent , Ġfalse )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCurrency Result ViewHolder ( in flater . inflate ( R . layout . currency _ result _ item , Ġparent , Ġfalse )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġasync Differ . current List . get OrNull ( position ) ĊĠĠĠĠĠĠĠ Ġif Ġ( item Ġ!= Ġnull Ġ&& Ġholder Ġis ĠCurrency Result ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( item , Ġposition Ġ% Ġ 2 Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġasync Differ . current List . size ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( async Differ . current List . get OrNull ( position ) Ġ== Ġnull ) Ġ 0 Ġelse Ġ 1 ĊĊĠĠĠ Ġfun Ġadd Data ( data : ĠList < Currency Result View Item >) Ġ{ ĊĠĠĠĠĠĠĠ Ġasync Differ . submit List ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Loader () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! async Differ . current List . contains ( null )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent List Ġ= Ġasync Differ . current List Ġ+ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasync Differ . submit List ( current List ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠCurrency Result ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġview Binding Ġ= ĠCurrency Result Item Binding . bind ( item View ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠCurrency Result View Item , Ġodd Row : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . context , Ġif Ġ( odd Row ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . odd _ result _ row _ color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . even _ result _ row _ color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . root . set BackgroundColor ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . stock Text . text Ġ= ĠitemView . context . getString ( R . string . stock _ text , Ġitem . stock ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . nick With Country . text Ġ= ĠitemView . context . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . account _ text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . account Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . last Character Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . player Status . text Ġ= Ġitem . status ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . get Exchange Text . text Ġ= ĠitemView . context . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . exchange _ get _ text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . get ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . pay Exchange Text . text Ġ= ĠitemView . context . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . exchange _ pay _ text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . pay ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . get Exchange Label . text Ġ= Ġitem . getLabel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . pay Exchange Label . text Ġ= Ġitem . pay Label ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get (). load ( item . get Icon ). into ( view Binding . get Exchange Image ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get (). load ( item . pay Icon ). into ( view Binding . pay Exchange Image ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠLoader ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ċ }