package Ġcom . int ell is rc . universal remote adapter . ui . remote _ controller . adapter Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . int ell is rc . universal remote adapter . R Ċ import Ġcom . int ell is rc . universal remote adapter . room . entities . Codes Entity Ċ import Ġcom . int ell is rc . universal remote adapter . ui . remote _ controller . Remote Controller Fragment ViewModel Ċ import Ġcom . int ell is rc . universal remote adapter . utils . Custom RecyclerView Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġjava . lang . IllegalArgumentException Ċ import Ġio . reactivex . Observable Ġas Ġio Observable Ċ Ċ class ĠR f Codes Adapter Ġinternal Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġcode List : ĠMutable List < Codes Entity >, ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠRemote Controller Fragment ViewModel ? Ċ ) Ġ: ĠCustom RecyclerView () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġcontext : ĠContext ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . context Ġ= Ġparent . context ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . fragment _ remote _ controller _ items Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . fragment _ remote _ controller _ items , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewHolder ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException ( parent . context . getString ( R . string . il legal _ argument _ exception )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( getItem ViewType ( position )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . fragment _ remote _ controller _ items Ġ-> Ġ( holder Ġas ĠViewHolder ). bind ( code List , Ġposition ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġcode List . size ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . fragment _ remote _ controller _ items ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdates Rf Code List ( new List : ĠMutable List < Codes Entity >, Ġactivity : ĠActivity ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcallback Ġ= ĠCallback ( this . code List , Ġnew List ) ĊĠĠĠĠĠĠĠ Ġval Ġdiff Ġ= Ġget Diff ( callback ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . new Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġdata Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . code List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . code List . addAll ( new List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. run On Ui Thread Ġ{ Ġdata . dispatch Updates To ( this @ Rf Codes Adapter ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Diff ( callback : ĠCallback ): Ġio Observable < Diff Util . Diff Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġio Observable . from Callable Ġ{ ĠDiff Util . calculate Diff ( callback ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder ( item View : ĠView ): ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcode Layout : ĠConstraint Layout Ġ= ĠitemView . findViewById ( R . id . frequency Layout ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtv Frequency : ĠTextView Ġ= ĠitemView . findViewById ( R . id . tv Frequency ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( list : ĠMutable List < Codes Entity >, Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġlist [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( code . name . isNull OrEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Frequency . text Ġ= Ġcode . code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Frequency . text Ġ= Ġcode . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode Layout . tag Ġ= Ġcode . code ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Frequency . setOnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }