package Ġcom . example . barcode scanner Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . widget . add TextChanged Listener Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . example . barcode scanner . data . Item Database Ċ import Ġcom . example . barcode scanner . utilities . Util Tools Ċ import Ġkotlinx . android . synt hetic . main . fragment _ search .* Ċ Ċ class ĠSearch Fragment Ġ: ĠFragment (), ĠView . OnClickListener Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġv endors : ĠList < String > ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġv endors Ġ= ĠItem Database . getInstance ( require Context ()). item Database Dao . get V endors List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter NotNull () ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ search , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ// last Ġtime Ġdata Ġupdated ĊĠĠĠĠĠĠĠ Ġval Ġlast Time Ġ= Ġrequire Activity (). get Preferences ( AppCompatActivity . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getLong ( getString ( R . string . saved _ last _ updated _ time _ key ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtext view _ updated _ Label . text Ġ= ĠgetString ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . last _ update , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtil Tools . get Readable Relative Date ( require Context (), Ġlast Time ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĊĠĠĠĠĠĠĠ Ġsearch _ button . setOnClickListener ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠArray Adapter ( require Context (), ĠR . layout . row _ list _ vendors , Ġv endors ) ĊĠĠĠĠĠĠĠ Ġautocomplete _ vendor . setAdapter ( adapter ) ĊĠĠĠĠĠĠĠ Ġautocomplete _ vendor . setOn ItemClickListener Ġ{ Ġ_, Ġ_, Ġ_, Ġ_ Ġ-> Ġautocomplete _ vendor . show DropDown () Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// text Ġlistener Ġto Ġchange Ġbutton Ġtext Ġdescription ĊĠĠĠĠĠĠĠ Ġset Text Listener () ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Text Listener () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġsearch _ input _ text . add TextChanged Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isEmpty () Ġ&& Ġautocomplete _ vendor . text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch _ button . text Ġ= Ġresources . getString ( R . string . all _ items ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch _ button . text Ġ= Ġresources . getString ( R . string . search ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġautocomplete _ vendor . add TextChanged Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isEmpty () Ġ&& Ġsearch _ input _ text . text ?. isEmpty () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch _ button . text Ġ= Ġresources . getString ( R . string . all _ items ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch _ button . text Ġ= Ġresources . getString ( R . string . search ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( v . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . search _ button Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtil Tools . hide Keyboard ( require Activity ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSearch Fragment Directions . action Search Fragment To SearchResult Fragment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġautocomplete _ vendor . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch _ input _ text . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheckbox _ only _ in _ stock . isChecked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ }