package Ġcom . hex l . base mv vm . ui . base čĊč Ċ import Ġandroid . content . Context č Ċ import Ġandroid . util . Sparse Array č Ċ import Ġandroid . view . LayoutInflater č Ċ import Ġandroid . view . View č Ċ import Ġandroid . view . ViewGroup č Ċ import Ġandroid . widget . LinearLayout č Ċ import Ġandroid . widget . ProgressBar č Ċ import Ġandroid . widget . TextView č Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager č Ċ import Ġandroidx . recyclerview . widget . RecyclerView čĊč Ċ /** čĊ Ġ* Ġ@ desc Ġ èĩªå®ļä¹ī RecyclerView Adapter čĊ Ġ* Ġ@ author ĠHex l čĊ Ġ* Ġ@ date Ġ 2 0 1 9 / 1 1 / 2 9 čĊ Ġ*/ č Ċ abstract Ġclass ĠBase RecyclerView Adapter < T >( čĊĠĠĠ Ġval Ġcontext : ĠContext , čĊĠĠĠ Ġval Ġlayout ItemId : ĠInt č Ċ ) Ġ: čĊĠĠĠ ĠRecyclerView . Adapter < Base RecyclerView Adapter . Base ViewHolder >() Ġ{ čĊčĊĠĠĠ Ġconstructor ( context : ĠContext , Ġdatas : ĠList < T >, Ġlayout ItemId : ĠInt ) Ġ: Ġthis ( context , Ġlayout ItemId ) Ġ{ čĊĠĠĠĠĠĠĠ Ġthis . current Datas Ġ= Ġdatas čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ// Ġå½ĵåīį æķ°æį® æºĲ čĊĠĠĠ Ġlateinit Ġvar Ġcurrent Datas : ĠList < T > čĊĠĠĠ Ġ// Ġå½ĵåīį ĠRecyclerView čĊĠĠĠ Ġlateinit Ġvar Ġcurrent RecyclerView : ĠRecyclerView čĊĠĠĠ Ġ// Ġå½ĵåīį Ġitem Ġ ä½įç½® čĊĠĠĠ Ġvar Ġcurrent Item Position : ĠInt Ġ= Ġ 0 čĊčĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠBase ViewHolder Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( context ). inflate ( layout ItemId , Ġparent , false ) čĊĠĠĠĠĠĠĠ Ġreturn ĠBase ViewHolder ( view ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġif Ġ( current Datas . isNotEmpty ()) Ġcurrent Datas . size Ġelse Ġ 0 čĊčĊĠĠĠ Ġoverride čĊĠĠĠ Ġfun Ġon Bind ViewHolder ( holder : ĠBase ViewHolder , Ġposition : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠ Ġcurrent Item Position Ġ= Ġposition čĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġcurrent Datas [ position ] čĊĠĠĠĠĠĠĠ Ġconvert Data ( holder , Ġdata ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġabstract Ġfun Ġconvert Data ( holder : ĠBase ViewHolder , Ġdata : ĠT ) čĊčĊĠĠĠ Ġfun Ġbind To RecyclerView ( re cyclerView : ĠRecyclerView ) Ġ{ čĊĠĠĠĠĠĠĠ Ġthis . current RecyclerView Ġ= Ġre cyclerView čĊĠĠĠĠĠĠĠ Ġthis . current RecyclerView . layout Manager Ġ= ĠLinearLayoutManager ( context ) čĊĠĠĠĠĠĠĠ Ġthis . current RecyclerView . adapter Ġ= Ġthis čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġnotify Data ( current Datas : ĠList < T >) Ġ{ čĊĠĠĠĠĠĠĠ Ġthis . current Datas Ġ= Ġcurrent Datas čĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġnotify Position Item Changed ( position : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠ Ġnotify Item Changed ( position ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġclass ĠBase ViewHolder ( private Ġval Ġlayout Item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( layout Item View ) Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġviews Ġ= ĠSparse Array < View >() čĊčĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") čĊĠĠĠĠĠĠĠ Ġfun Ġ< T Ġ: ĠView > Ġget View ( id : ĠInt ): ĠT Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġview Ġ= Ġviews . get ( id ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Ġ== Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġ= Ġlayout Item View . findViewById ( id ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġviews . put ( id , Ġview ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġview Ġas ĠT čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġfun Ġset Text ( id : ĠInt , Ġvalue : ĠString ): ĠBase ViewHolder Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġget View < TextView >( id ). text Ġ= Ġvalue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġfun Ġset Progress ( id : ĠInt , Ġvalue : ĠInt ): ĠBase ViewHolder Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġget View < ProgressBar >( id ). progress Ġ= Ġvalue čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ }