package Ġcom . lu ke v ano ort . sample . ui . android čĊč Ċ import Ġandroid . content . Context č Ċ import Ġandroid . text . format . DateFormat č Ċ import Ġandroid . util . Attribute Set č Ċ import Ġandroid . view . LayoutInflater č Ċ import Ġandroid . view . View č Ċ import Ġandroid . view . ViewGroup č Ċ import Ġandroid . widget . TextView č Ċ import Ġandroidx . annotation . Any Thread č Ċ import Ġandroidx . annotation . Ui Thread č Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager č Ċ import Ġandroidx . recyclerview . widget . RecyclerView č Ċ import Ġcom . lu ke v ano ort . cell ar man . sample . logic . Sample List ViewModel č Ċ import Ġcom . lu ke v ano ort . cell ar man . sample . logic . Sample ListView State č Ċ import Ġcom . lu ke v ano ort . sample . model . Sample č Ċ import Ġcom . lu ke v ano ort . st unt man . SM View č Ċ import Ġio . reactivex . dis pos ables . Disposable č Ċ import Ġjava . text . SimpleDateFormat č Ċ import Ġjava . util . Locale č Ċ import Ġjava . util . UUID čĊč Ċ class ĠSample ListView Ġ: ĠRecyclerView , čĊĠĠĠ ĠSM View < Sample ListView State , ĠSample List ViewModel > Ġ{ čĊĠĠĠ Ġprivate Ġvar Ġcurrent State Ġ: ĠSample ListView State Ġ= ĠSample ListView State . Has List ( emptyList ()) čĊĠĠĠ Ġprivate Ġvar Ġnext State Ġ: ĠSample ListView State Ġ= ĠSample ListView State . Has List ( emptyList ()) čĊčĊĠĠĠ Ġprivate Ġvar Ġvm Ġ: ĠSample List ViewModel ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġvar Ġdisp Ġ: ĠDis posable ? Ġ= Ġnull čĊčĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) Ġ{ Ġinitialize ( context ) Ġ} čĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ Ġinitialize ( context ) Ġ} čĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( čĊĠĠĠĠĠĠĠ Ġcontext , čĊĠĠĠĠĠĠĠ Ġattrs , čĊĠĠĠĠĠĠĠ Ġdef Style Attr čĊĠĠĠ Ġ) Ġ{ Ġinitialize ( context ) Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġinitialize ( ctx : ĠContext ) Ġ{ čĊĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( ctx , ĠLinearLayoutManager . VERTICAL , Ġfalse ) čĊĠĠĠĠĠĠĠ Ġadapter Ġ= Ġvl Adapter čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġbind ViewModel ( vm Ġ: ĠSample List ViewModel ) Ġ{ čĊĠĠĠĠĠĠĠ Ġdisp ?. dispose () čĊĠĠĠĠĠĠĠ Ġthis . vm Ġ= Ġvm čĊĠĠĠĠĠĠĠ Ġdisp Ġ= Ġvm . getState (). subscribe Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState ( it ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġun bind ViewModel () Ġ{ čĊĠĠĠĠĠĠĠ Ġdisp ?. dispose () čĊĠĠĠĠĠĠĠ Ġthis . vm Ġ= Ġnull čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Detached From Window () Ġ{ čĊĠĠĠĠĠĠĠ Ġsuper . on Detached From Window () čĊĠĠĠĠĠĠĠ Ġun bind ViewModel () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Any Thread čĊĠĠĠ Ġoverride Ġfun ĠsetState Ġ( state Ġ: ĠSample ListView State ) Ġ{ čĊĠĠĠĠĠĠĠ Ġthis . next State Ġ= Ġstate čĊĠĠĠĠĠĠĠ Ġpost Ġ{ Ġreset () Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Ui Thread čĊĠĠĠ Ġprivate Ġfun Ġreset () Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġlocal Next Ġ= Ġnext State čĊĠĠĠĠĠĠĠ Ġval Ġlocal Current Ġ= Ġcurrent State čĊĠĠĠĠĠĠĠ Ġif Ġ( local Next Ġ!= Ġlocal Current ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent State Ġ= Ġlocal Next čĊĠĠĠĠĠĠĠĠĠĠĠ Ġvl Adapter . notify DataSet Changed () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġval Ġdate Formatter Ġ= ĠSimpleDateFormat ( DateFormat . get Best DateTime Pattern ( Locale . getDefault (), " hh : mm Ġaa Ġdd ĠM MM Ġy yyy ")) čĊĠĠĠ Ġprivate Ġinner Ġclass ĠVL VH ( val Ġview Ġ: ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ čĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcurrent UUID : ĠUUID ? Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġinit Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setOnClickListener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent UUID ?. let Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvm ?. sample Selected ( it ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġfun Ġbind ( v : ĠSample ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent UUID Ġ= Ġv . id čĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . findViewById < TextView >( R . id . tv _ sample _ notes ). text Ġ= Ġv . notes čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . findViewById < TextView >( R . id . tv _ sample _ date ). text Ġ= Ġdate Formatter . format ( v . time ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġval Ġvl Adapter Ġ= Ġobject Ġ: ĠRecyclerView . Adapter < VL VH >() Ġ{ čĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠVL VH Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠVL VH ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ). inflate ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . sample _ list _ item _ layout , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġcurrent State čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen ( l ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSample ListView State . Has List Ġ-> Ġl . samples . size čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠVL VH , Ġposition : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġcurrent State čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen ( l ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSample ListView State . Has List Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( l . samples [ position ]) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠ Ġ} č Ċ }