package Ġcom . b ren tp an ther . bitcoin widget . ui . selection Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Filter Ċ import Ġandroid . widget . Filter able Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . b ren tp an ther . bitcoin widget . Coin Entry Ċ import Ġcom . b ren tp an ther . bitcoin widget . Theme Ċ import Ġcom . b ren tp an ther . bitcoin widget . databinding . View Coin Selector Binding Ċ Ċ internal Ġclass ĠCoin Selection Adapter ( private Ġval ĠonClick Listener : Ġ(( coin : ĠCoin Entry ) Ġ-> ĠUnit )) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Coin Selection Adapter . My ViewHolder >(), ĠFilter able Ġ{ ĊĊĠĠĠ Ġvar Ġcoins : ĠList < Coin Entry > Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiltered Coins Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġfiltered Coins : ĠList < Coin Entry > Ġ= ĠlistOf () ĊĠĠĠ Ġprivate Ġval Ġmy Filter Ġ= ĠMy Filter () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠMy ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠView Coin Selector Binding . inflate ( LayoutInflater . from ( parent . context ), Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠMy ViewHolder ( binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠMy ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( filtered Coins [ position ], ĠonClick Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġfiltered Coins . size ĊĊĠĠĠ Ġinternal Ġclass ĠMy ViewHolder ( private Ġval Ġbinding : ĠView Coin Selector Binding ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( entry : ĠCoin Entry , ĠonClick Listener : Ġ(( coin : ĠCoin Entry ) Ġ-> ĠUnit )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Night Mode Ġ= Ġ( binding . root . context . resources . configuration . ui Mode Ġand ĠConfiguration . UI _ MODE _ N IGHT _ MASK ) Ġ== ĠConfiguration . UI _ MODE _ N IGHT _ YES ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoin Icon . setImage Resource ( entry . coin . get Icon ( Theme . SOLID , Ġis Night Mode )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoin Name . text Ġ= Ġentry . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoin Symbol . text Ġ= Ġentry . symbol ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot . setOnClickListener Ġ{ ĠonClick Listener ( entry ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Filter () Ġ= Ġmy Filter ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġinner Ġclass ĠMy Filter Ġ: ĠFilter () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġperform Filtering ( value : ĠCharSequence ?): ĠFilter Results Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresults Ġ= ĠFilter Results () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults . values Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . isNull Or Blank () Ġ-> Ġcoins ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġcoins . filter Ġ{ Ġit . symbol . startsWith ( value , Ġtrue ) Ġ|| Ġit . name . startsWith ( value , Ġtrue ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresults ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Notify DataSet Changed ") ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpublish Results ( value : ĠCharSequence , Ġresults : ĠFilter Results ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiltered Coins Ġ= Ġresults . values Ġas ĠList < Coin Entry > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }