package Ġcom . ky bers wap . android . presentation . main . transaction Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġcom . ky bers wap . android . App Executors Ċ import Ġcom . ky bers wap . android . BR Ċ import Ġcom . ky bers wap . android . R Ċ import Ġcom . ky bers wap . android . databinding . Item Token Filter Binding Ċ import Ġcom . ky bers wap . android . domain . model . Filter Item Ċ import Ġcom . ky bers wap . android . presentation . base . Data Bound ListAdapter Ċ Ċ class ĠToken Filter Adapter ( ĊĠĠĠ Ġapp Executors : ĠApp Executors Ċ ) Ġ: ĠData Bound ListAdapter < Filter Item , ĠItem Token Filter Binding >( ĊĠĠĠ Ġapp Executors , ĊĠĠĠ Ġdiff Callback Ġ= Ġobject Ġ: ĠDiff Util . Item Callback < Filter Item >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠFilter Item , Ġnew Item : ĠFilter Item ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . name Ġ== Ġnew Item . name ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠFilter Item , Ġnew Item : ĠFilter Item ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . name Ġ== Ġnew Item . name Ġ&& Ġold Item . isSelected Ġ== Ġnew Item . isSelected ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġfull Mode : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġbind ( binding : ĠItem Token Filter Binding , Ġitem : ĠFilter Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . tv Token . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . isSelected Ġ= Ġ! item . isSelected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . set Variable ( BR . item , Ġitem ) ĊĠĠĠĠĠĠĠ Ġbinding . execute Pending Bindings () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Full Mode ( is Full Mode : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( full Mode Ġ!= Ġis Full Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfull Mode Ġ= Ġis Full Mode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsubmit Filter List ( items : ĠList < Filter Item >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsorted List Ġ= Ġitems . sorted By Descending Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . isSelected ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsubmit List ( sort edList ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset Filter ( is Select e All : ĠBoolean ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġsubmit Filter List ( getData (). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . isSelected Ġ= Ġis Select e All ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfull Mode Ġ-> Ġsuper . getItem Count () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( super . getItem Count () Ġ> Ġ 1 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . getItem Count () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġcreate Binding ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠItem Token Filter Binding Ġ= ĊĠĠĠĠĠĠĠ ĠData Binding Util . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ token _ filter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) Ċ }