package Ġcom . fol i ore ader . ui . activity Ċ Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . app . Search Manager Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . LinearLayout Compat Ċ import Ġandroidx . appcompat . widget . Search View Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ // import Ġandroidx . local broadcast manager . content . Local Broadcast Manager Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . fol i ore ader . Config Ċ import Ġcom . fol i ore ader . R Ċ import Ġcom . fol i ore ader . Theme Config Ċ import Ġcom . fol i ore ader . model . loc ators . Search Locator Ċ import Ġcom . fol i ore ader . ui . adapter . ListView Type Ċ import Ġcom . fol i ore ader . ui . adapter . On ItemClickListener Ċ import Ġcom . fol i ore ader . ui . adapter . Search Adapter Ċ import Ġcom . fol i ore ader . ui . view . F ol io Search View Ċ import Ġcom . fol i ore ader . util . App Util Ċ import Ġcom . fol i ore ader . view models . Search ViewModel Ċ import Ġkotlinx . android . synt hetic . main . activity _ search .* Ċ Ċ class ĠSearch Activity Ġ: ĠAppCompatActivity (), ĠOn ItemClickListener Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠLOG _ TAG : ĠString Ġ= ĠSearch Activity :: class . java . simple Name ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠB UNDLE _ SP INE _ SIZE Ġ= Ġ" B UNDLE _ SP INE _ SIZE " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠB UNDLE _ SEARCH _ URI Ġ= Ġ" B UNDLE _ SEARCH _ URI " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠB UNDLE _ SAVE _ SEARCH _ QUERY Ġ= Ġ" B UNDLE _ SAVE _ SEARCH _ QUERY " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠB UNDLE _ IS _ SOFT _ KEY BOARD _ VISIBLE Ġ= Ġ" B UNDLE _ IS _ SOFT _ KEY BOARD _ VISIBLE " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠB UNDLE _ FIRST _ VISIBLE _ ITEM _ INDEX Ġ= Ġ" B UNDLE _ FIRST _ VISIBLE _ ITEM _ INDEX " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠResult Code ( val Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠITEM _ SELECTED ( 2 ), ĊĠĠĠĠĠĠĠ ĠBACK _ BUTTON _ PRES SED ( 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġm Back Button : ĠLinearLayout Compat ? Ġ= Ġnull ĊĊĠĠĠ Ġ// ĠSearch Ġ// ĊĠĠĠ Ġprivate Ġvar Ġm Search Menu : ĠConstraint Layout ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Search BG : ĠLinearLayout Compat ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Search Edit Back : ĠLinearLayout Compat ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Search Icon : ĠImageView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Search Button : ĠButton ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Search Edit : ĠEditText ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġsp ine Size : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsearch Uri : ĠUri ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsearch View : ĠFol io Search View ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlinear LayoutManager : ĠLinearLayoutManager ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsearch Adapter : ĠSearch Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsearch Adapter Data Bundle : ĠBundle ĊĠĠĠ Ġprivate Ġvar ĠsavedInstanceState : ĠBundle ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġsoft Keyboard Visible : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsearch ViewModel : ĠSearch ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġconfig : ĠConfig Ġ= ĠApp Util . get Saved Config ( this ) !! ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ search ) ĊĠĠĠĠĠĠĠ Ġproc Search ( config ) ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġproc Search ( config : ĠConfig ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch View Ġ= ĠFol io Search View ( this ) ĊĠĠĠĠĠĠĠ Ġsearch View . init ( component Name , Ġconfig ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View . set Query ( savedInstanceState !!. get CharSequence ( B UNDLE _ SAVE _ SEARCH _ QUERY ), Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft Keyboard Visible Ġ= ĠsavedInstanceState !!. getBoolean ( B UNDLE _ IS _ SOFT _ KEY BOARD _ VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! soft Keyboard Visible ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Util . hide Keyboard ( this ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch Query : ĠCharSequence ? Ġ= Ġintent . get CharSequence Extra ( B UNDLE _ SAVE _ SEARCH _ QUERY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( search Query )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View . set Query ( search Query , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Util . hide Keyboard ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsoft Keyboard Visible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsearch View . setOn Query Text Listener ( object Ġ: ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsoft Keyboard Visible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch View . clear Focus () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( new Text : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( new Text )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch ViewModel . cancel All Search Calls () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch ViewModel . init () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġsearch View . setOn Query Text Focus ChangeListener Ġ{ Ġ_, Ġhas Focus Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Focus ) Ġsoft Keyboard Visible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Back Button Ġ= ĠfindViewById ( R . id . btn _ back ) ĊĠĠĠĠĠĠĠ Ġm Back Button !!. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate Back () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSearch Ġ// ĊĠĠĠĠĠĠĠ Ġm Search Menu Ġ= ĠfindViewById ( R . id . ll _ menu _ search ) ĊĠĠĠĠĠĠĠ Ġm Search BG Ġ= ĠfindViewById ( R . id . ll _ search _ background ) ĊĠĠĠĠĠĠĠ Ġm Search Edit Back Ġ= ĠfindViewById ( R . id . ll _ search _ bar ) ĊĠĠĠĠĠĠĠ Ġm Search Icon Ġ= ĠfindViewById ( R . id . iv _ search _ icon ) ĊĊĠĠĠĠĠĠĠ Ġm Search Edit Ġ= ĠfindViewById ( R . id . et _ search ) ĊĠĠĠĠĠĠĠ Ġm Search Edit !!. setOn Editor ActionListener ( object Ġ: ĠTextView . On Editor ActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Editor Action ( v : ĠTextView ?, Ġaction Id : ĠInt , Ġevent : ĠKeyEvent ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Id Ġ== ĠEditor Info . IME _ ACTION _ SEARCH ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġm Search Button Ġ= ĠfindViewById ( R . id . bt _ search ) ĊĠĠĠĠĠĠĠ Ġm Search Button !!. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġintent . has Extra (" TEXT _ FOR _ SEARCH "). also Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . getString Extra (" TEXT _ FOR _ SEARCH "). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Search Edit !!. setText ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsp ine Size Ġ= Ġintent . getInt Extra ( B UNDLE _ SP INE _ SIZE , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġsearch Uri Ġ= Ġintent . get Parcelable Extra ( B UNDLE _ SEARCH _ URI ) ĊĊĠĠĠĠĠĠĠ Ġsearch Adapter Ġ= ĠSearch Adapter ( this ) ĊĠĠĠĠĠĠĠ Ġsearch Adapter . on ItemClickListener Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġlinear LayoutManager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= Ġlinear LayoutManager ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġsearch Adapter ĊĊĠĠĠĠĠĠĠ Ġsearch ViewModel Ġ= ĠViewModel Providers . of ( this ). get ( Search ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġsearch Adapter Data Bundle Ġ= Ġsearch ViewModel . live Adapter Data Bundle . value !! ĊĊĠĠĠĠĠĠĠ Ġval Ġbundle From F ol io Activity Ġ= Ġintent . get Bundle Extra ( Search Adapter . DATA _ B UNDLE ) ĊĠĠĠĠĠĠĠ Ġif Ġ( bundle From F ol io Activity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch ViewModel . live Adapter Data Bundle . value Ġ= Ġbundle From F ol io Activity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Adapter Data Bundle Ġ= Ġbundle From F ol io Activity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Adapter . change Data Bundle ( bundle From F ol io Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġbundle From F ol io Activity . getInt ( B UNDLE _ FIRST _ VISIBLE _ ITEM _ INDEX ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . scrollTo Position ( position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsearch ViewModel . live Adapter Data Bundle . observe ( this , ĠObserver < Bundle > Ġ{ Ġdata Bundle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Adapter Data Bundle Ġ= Ġdata Bundle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Adapter . change Data Bundle ( data Bundle ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġsearch () ĊĠĠĠĠĠĠĠ Ġupdate Theme () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclick () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Search Edit !!. text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setMessage (" ê² Ģ ìĥī ìĸ´ ë¥¼ Ġìŀħëł¥ íķ´ ì£¼ ìĦ¸ìļĶ .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Positive Button (" íĻ ķ ìĿ¸ ") Ġ{ Ġ_, Ġ_ Ġ-> Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . show () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsearch () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstr : ĠString Ġ= Ġm Search Edit !!. text . toString () ĊĠĠĠĠĠĠĠ Ġsearch View . set Query ( str , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Theme () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSearch ĠBar Ġ// ĊĠĠĠĠĠĠĠ Ġm Search BG !!. setBackground Resource ( Theme Config ._ search Bar Edit Box ) ĊĠĠĠĠĠĠĠ Ġm Search Edit Back !!. setBackground Resource ( Theme Config ._ search Bar EditText Style ) ĊĠĠĠĠĠĠĠ Ġm Search Icon !!. setImage Resource ( Theme Config ._ search Bar Search Icon ) ĊĠĠĠĠĠĠĠ Ġm Search Edit !!. setTextColor ( Theme Config ._ search Bar Edit TextColor ) ĊĠĠĠĠĠĠĠ Ġm Search Button !!. setBackground Resource ( Theme Config ._ search Bar ButtonStyle ) ĊĠĠĠĠĠĠĠ Ġm Search Button !!. setTextColor ( Theme Config ._ search Bar Button TextColor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon New Intent ( intent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on New Intent ( intent ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent . has Extra ( B UNDLE _ SEARCH _ URI )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Uri Ġ= Ġintent . get Parcelable Extra ( B UNDLE _ SEARCH _ URI ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( B UNDLE _ SEARCH _ URI , Ġsearch Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( B UNDLE _ SP INE _ SIZE , Ġsp ine Size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset Intent ( intent ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Intent . ACTION _ SEARCH Ġ== Ġintent . action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Search () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Search () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery : ĠString Ġ= Ġintent . getString Extra ( Search Manager . QUERY ) ĊĠĠĠĠĠĠĠ Ġval ĠnewData Bundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ ĠnewData Bundle . putString ( ListView Type . KEY , ĠListView Type . P AG INATION _ IN _ PROGRESS _ VIEW . toString ()) ĊĠĠĠĠĠĠĠ ĠnewData Bundle . put Parcelable ArrayList (" DATA ", ĠArrayList < Search Locator >()) ĊĠĠĠĠĠĠĠ Ġsearch ViewModel . live Adapter Data Bundle . value Ġ= ĠnewData Bundle ĊĊĠĠĠĠĠĠĠ Ġsearch ViewModel . search ( sp ine Size , Ġquery ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġout State . put CharSequence ( B UNDLE _ SAVE _ SEARCH _ QUERY , Ġsearch View . query ) ĊĠĠĠĠĠĠĠ Ġout State . put Boolean ( B UNDLE _ IS _ SOFT _ KEY BOARD _ VISIBLE , Ġsoft Keyboard Visible ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Restore InstanceState ( savedInstanceState : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Restore InstanceState ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġthis . savedInstanceState Ġ= ĠsavedInstanceState ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnavigate Back () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġsearch Adapter Data Bundle . put Int ( B UNDLE _ FIRST _ VISIBLE _ ITEM _ INDEX , Ġlinear LayoutManager . findFirst Visible Item Position ()) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Search Adapter . DATA _ B UNDLE , Ġsearch Adapter Data Bundle ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( B UNDLE _ SAVE _ SEARCH _ QUERY , Ġsearch View . query ) ĊĠĠĠĠĠĠĠ Ġset Result ( ResultCode . BACK _ BUTTON _ PRES SED . value , Ġintent ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġnavigate Back () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Click ( adapter : ĠRecyclerView . Adapter < RecyclerView . ViewHolder >, ĠviewHolder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt , Ġid : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( adapter Ġis ĠSearch Adapter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Holder Ġis ĠSearch Adapter . Normal ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Adapter Data Bundle . put Int ( B UNDLE _ FIRST _ VISIBLE _ ITEM _ INDEX , Ġlinear LayoutManager . findFirst Visible Item Position ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Search Adapter . DATA _ B UNDLE , Ġsearch Adapter Data Bundle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( F ol io Activity . EXTRA _ SEARCH _ ITEM , ĠviewHolder . search Locator Ġas ĠParcel able ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( B UNDLE _ SAVE _ SEARCH _ QUERY , Ġsearch View . query ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( ResultCode . ITEM _ SELECTED . value , Ġintent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }