package Ġza . org . gr ass root 2 . view . adapter Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Filter Ċ import Ġandroid . widget . Filter able Ċ import Ġcom . jak ew h art on . r xb ind ing 2 . view . Rx View Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . subjects . Publish Subject Ċ import Ġkotlinx . android . synt hetic . main . item _ member . view .* Ċ import Ġza . org . gr ass root 2 . R Ċ import Ġza . org . gr ass root 2 . model . Membership Ċ import Ġza . org . gr ass root 2 . model . util . PhoneNumber Formatter Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġlu ke Ġon Ġ 2 0 1 7 / 1 2 / 1 0 . Ċ Ġ*/ Ċ class ĠMembers Adapter Ġ@ Inject Ċ constructor ( private Ġval Ġcontext : ĠContext , Ġprivate Ġvar Ġdata : ĠList < Membership >) Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >(), ĠFilter able Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġfiltered Data Ġ: ĠList < Membership > Ġ= Ġdata . toList () ĊĊĠĠĠ Ġprivate Ġval Ġview Click Subject Ġ= Ġ ĠPublish Subject . create < Membership >() ĊĠĠĠ Ġval Ġview Click Observable : ĠObservable < Membership > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġview Click Subject ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġfiltered Data . size ĊĊĠĠĠ Ġoverride Ġfun Ġget Filter (): ĠFilter Ġ= Ġobject : ĠFilter () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġperform Filtering ( constraint : ĠCharSequence ): ĠFilter Results Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresults Ġ= ĠFilter Results () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiltered Ġ= Ġdata . filter Ġ{ Ġmembership Ġ-> Ġmembership . contains String ( constraint ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults . values Ġ= Ġfiltered ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults . count Ġ= Ġfiltered . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresults ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpublish Results ( constraint : ĠCharSequence , Ġresults : ĠFilter Results ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiltered Data Ġ= Ġresults . values Ġas ĠList < Membership > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMembers hip ViewHolder ( LayoutInflater . from ( parent . context ). inflate ( R . layout . item _ member , Ġparent , Ġfalse )) ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmember Ġ= Ġfiltered Data [ position ] ĊĠĠĠĠĠĠĠ Ġ( holder Ġas ĠMembers hip ViewHolder ). member Name . text Ġ= Ġmember . name ĊĠĠĠĠĠĠĠ Ġval Ġrole Description Ġ= Ġcontext . getString ( member . role Name Res ) ĊĠĠĠĠĠĠĠ Ġholder . member Details . text Ġ= Ġcontext . getString ( R . string . member _ description _ format , Ġrole Description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPhone Number Formatter . format Number For Display ( member . phoneNumber , Ġ" Ġ")) ĊĠĠĠĠĠĠĠ ĠRx View . click s ( holder . root ). map Ġ{ Ġ_ Ġ-> Ġmember Ġ}. subscribe ( view Click Subject ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġtodo Ġ: Ġadd Ġuser Ġprofile Ġimages ĊĠĠĠ Ġinternal Ġclass ĠMembers hip ViewHolder Ġinternal Ġconstructor ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġroot Ġ= ĠitemView . root ĊĠĠĠĠĠĠĠ Ġvar Ġmember Name Ġ= ĠitemView . member Name ĊĠĠĠĠĠĠĠ Ġvar Ġmember Details Ġ= ĠitemView . member Details ĊĠĠĠ Ġ} Ċ Ċ }