package Ġcom . sw ens un . func . status Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . dr ake et . mult it ype . Multi Type Adapter Ċ import Ġcom . due ee ke . vide op layer . util . visible Ċ import Ġcom . sw ens un . Status Event Ċ import Ġcom . sw ens un . base . Base Activity Ċ import Ġcom . sw ens un . func . recycler . R Int Ċ import Ġcom . sw ens un . pot ato . databinding . Activity Status Page Binding Ċ import Ġcom . sw ens un . pot ato . databinding . Item RecyclerView Binding Ċ import Ġcom . sw ens un . sw utils . mult it ype . View Binding Delegate Ċ import Ġcom . sw ens un . sw utils . mult it ype . update Items Ċ import Ġcom . sw ens un . sw utils . ui . context Ċ import Ġcom . sw ens un . sw utils . util . Logger Ċ Ċ class ĠStatus Page Activity Ġ: ĠBase Activity < Activity Status Page Binding >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġlazy Ġ{ ĠViewModel Provider ( this ). get ( Status Page ViewModel :: class . java ) Ġ} ĊĠĠĠ Ġval Ġadapter Ġ= ĠMulti Type Adapter () ĊĊĊĠĠĠ Ġoverride Ġfun Ġinit View ( savedInstanceState : ĠBundle ?) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠviewModel . status LiveData . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d (" status LiveData Ġchanged : Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus Event . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . status View . show Error Status () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus Event . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . status View . show Loading Status () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus Event . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . status View . remove Status () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus Event . EMPTY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . status View . show Empty Status () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ çĬ¶æĢģ åĪĩæį¢ ĊĠĠĠĠĠĠĠ Ġbinding . btn Error . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . load Data With Status ( Status Event . ERROR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn Success . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . load Data With Status ( Status Event . SUCCESS ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . btn Empty . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . load Data With Status ( Status Event . EMPTY ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . status View . register ( Status Event . ERROR , ĠStatus Sub View ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Title . text Ġ= Ġ" åĬłè½½ éĶĻè¯¯ " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Content . visible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Confirm . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . load Data With Status ( Status Event . SUCCESS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbinding . status View . register ( Status Event . EMPTY , ĠStatus Sub View ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Title . text Ġ= Ġ" åĨħå®¹ ä¸ºç©º " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Content . visible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Confirm . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . load Data With Status ( Status Event . SUCCESS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbinding . status View . register ( Status Event . LOADING , ĠStatus Sub View ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Title . text Ġ= Ġ" åĬłè½½ ä¸Ń ..." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Content . visible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Confirm . visible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbinding . re cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġadapter . register ( R ViewHolder Delegate ()) ĊĠĠĠĠĠĠĠ Ġbinding . re cyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġ 1 0 ). map Ġ{ ĠR Int ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġadapter . update Items ( items ) ĊĠĠĠĠĠĠĠ ĠLogger . d (" status ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠR ViewHolder Delegate Ġ: ĠView Binding Delegate < R Int , ĠItem RecyclerView Binding >() Ġ{ ĊĊĠĠĠ Ġvar Ġload More : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( ĊĠĠĠĠĠĠĠ Ġholder : ĠView Binding ViewHolder < Item RecyclerView Binding >, ĊĠĠĠĠĠĠĠ Ġitem : ĠR Int ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( holder . binding Adapter Position Ġ== Ġadapter . item Count Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload More ?. invoke () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġholder . binding . tv Id . text Ġ= Ġitem . id . toString () ĊĠĠĠĠĠĠĠ Ġholder . binding . root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }