package Ġcom . lo dz . android . agile dev kt . modules . rv . binder . second Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . lo dz . android . agile dev kt . bean . N ation Bean Ċ import Ġcom . lo dz . android . agile dev kt . databinding . Rv Binder Second Binding Ċ import Ġcom . lo dz . android . pand ora . widget . rv . binder . Recycler Binder Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġz hou L Ġon Ġ 2 0 1 8 / 1 2 / 1 1 . Ċ Ġ*/ Ċ class ĠSecond Binder ( context : ĠContext , Ġbinder Type : ĠInt ) Ġ: ĠRe cycler Binder < List < N ation Bean >>( context , Ġbinder Type ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Data : ĠList < N ation Bean >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Listener : ĠListener ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup ): ĠRecyclerView . ViewHolder Ġ= ĊĠĠĠĠĠĠĠ ĠData ViewHolder ( getView Binding Layout ( Rv Binder Second Binding :: inflate , Ġparent )) ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġm Data ĊĠĠĠĠĠĠĠ Ġif Ġ( list . isNull OrEmpty () Ġ|| Ġholder Ġ! is ĠData ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġholder . setData ( list ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Listener ( listener : ĠListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetData ( list : ĠList < N ation Bean >) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Data Ġ= Ġlist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetData ( position : ĠInt ): ĠList < N ation Bean >? Ġ= Ġm Data ĊĊĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ= Ġ 1 ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠData ViewHolder ( private Ġval Ġbinding : ĠR v Binder Second Binding ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Adapter : ĠSecond Binder Adapter ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun ĠsetData ( list : ĠList < N ation Bean >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Adapter Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Manager Ġ= ĠGrid LayoutManager ( getContext (), Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager . orientation Ġ= ĠRecyclerView . VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter Ġ= ĠSecond Binder Adapter ( getContext ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . re cyclerView . layout Manager Ġ= Ġlayout Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . re cyclerView . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . re cyclerView . adapter Ġ= Ġm Adapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter ?. setOn ItemClickListener Ġ{ ĠviewHolder , Ġitem , Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Listener ?. onClick ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter ?. setData ( list . to Mutable List ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinterface ĠListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠonClick ( item : ĠN ation Bean ) ĊĠĠĠ Ġ} Ċ }