package Ġcom . di ana . test . me dd raw er . view . home Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Adapter View Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroidx . core . widget . add TextChanged Listener Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . di ana . test . me dd raw er . MainActivity Ċ import Ġcom . di ana . test . me dd raw er . R Ċ import Ġcom . di ana . test . me dd raw er . bases . Base View Ċ import Ġcom . di ana . test . me dd raw er . model . Med icine Model Ċ import Ġcom . di ana . test . me dd raw er . view . med icine . Med icine Activity Ċ import Ġcom . di ana . test . me dd raw er . view . med icine . Med icine Adapter Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ home .* Ċ import Ġkotlinx . android . synt hetic . main . recyclerview _ add med _ row _ details .* Ċ Ċ class ĠHome Fragment Ġ: ĠFragment (), ĠHome Contract . View , ĠBase View Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġadapter : ĠMed icine ListAdapter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠMed icine ListAdapter ( activity !! ) Ġ{ Ġmedic ine Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( activity , ĠMed icine Activity () :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" med icine ", Ġmedic ine ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" state ", Ġ" VIEW ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpresenter Ġ= ĠHome Presenter < Home Contract . View >() ĊĠĠĠ Ġvar Ġoriginal Med List Ġ: ĠArrayList < Med icine Model > Ġ= ĠArrayList () ĊĠĠĠ Ġvar Ġeditor Ġ: ĠSharedPreferences . Editor ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). textView Toolbar ?. text Ġ= ĠgetString ( R . string . app _ name ) ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ home , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġeditor Ġ= Ġ Ġ( activity Ġas ĠMainActivity ). shared Preferences ?. edit () ĊĊĠĠĠĠĠĠĠ ĠsetUp () ĊĠĠĠĠĠĠĠ Ġtext Search . add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Edit are ", Ġs . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . items Ġ= ĠArrayList ( original Med List . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name !!. toLowerCase (). contains ( s . toString (). toLowerCase ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġtext X . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . items Ġ= Ġoriginal Med List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Search . setText ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). hide Keyboard ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Home . request Focus () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġspinner Sort ?. on ItemSelected Listener Ġ= Ġobject Ġ: ĠAdapter View . On ItemSelected Listener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Nothing Selected ( parent : ĠAdapter View < *> ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( parent : ĠAdapter View < *> ?, Ġview : ĠView ?, Ġposition : ĠInt , Ġid : ĠLong ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġpresenter . sort Type Ġ= ĠSort Type . NAME ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġpresenter . sort Type Ġ= ĠSort Type . EXP _ DATE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġpresenter . sort Type Ġ= ĠSort Type . AMOUNT _ LEFT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor ?. putString (" SORT _ TYPE ", presenter . sort Type . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor ?. apply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . get Med icine () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// region Ġm vp ĊĊĠĠĠ Ġoverride Ġfun Ġgot Med icine ( list : ĠArrayList < Med icine Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . items Ġ= Ġlist ĊĠĠĠĠĠĠĠ Ġoriginal Med List Ġ= Ġlist ĊĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĊĠĠĠĠĠĠĠ Ġ( activity Ġas ? ĠMainActivity )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Main Splash . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġactivity ĊĠĠĠĠĠĠĠ Ġif ( request Code Ġ== Ġ 1 Ġ&& ĠresultCode Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// some Ġcode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Med icine Ġ= Ġdata ?. get Parcelable Extra (" new ") Ġas ? ĠMed icine Model ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . update Med icine ( new Med icine ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== Ġ 1 Ġ&& ĠresultCode Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdeleted Item Ġ= Ġdata ?. get Parcelable Array Extra (" delete Ġitem ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . get Med icine () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region Ġprivate Ġmethods ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter . on Attach ( this ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( activity !! ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ ĠArray Adapter . createFrom Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext !! , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . array . sort _ types , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . sort _ spinner ĊĠĠĠĠĠĠĠ Ġ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . set DropDown View Resource ( R . layout . support _ simple _ spinner _ dropdown _ item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner Sort . adapter Ġ= Ġit ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ(( activity Ġas ĠMainActivity ). shared Preferences !!. getString (" SORT _ TYPE ", null )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" NAME " Ġ-> Ġspinner Sort . setSelection ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" EXP _ DATE " Ġ-> Ġspinner Sort . setSelection ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" AMOUNT _ LEFT " -> Ġspinner Sort . setSelection ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġoverride Ġfun Ġon Detach () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detach () ĊĠĠĠĠĠĠĠ Ġpresenter . on Detach () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd New Med icine ( med icine Model : ĠMed icine Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter . med icine Items . add ( med icine Model ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ