package Ġcom . ze yn eler di . m ack ol ik . ui . news . adapter Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . Binding Adapter Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . ze yn eler di . m ack ol ik . R Ċ import Ġcom . ze yn eler di . m ack ol ik . ui . news . model . response . News Ċ import Ġcom . ze yn eler di . m ack ol ik . util . decoration . RecyclerView Margin Decoration Ċ import Ġcom . ze yn eler di . m ack ol ik . util . extension .* Ċ import Ġkotlinx . android . synt hetic . main . list _ item _ news . view .* Ċ Ċ class ĠNews Adapter ( ĊĠĠĠ Ġprivate Ġval Ġlist : ĠArrayList < News >, ĊĠĠĠ Ġprivate Ġval Ġclick Listener : Ġ(( News ) Ġ-> ĠUnit )? Ċ ) Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠNews ViewHolder ( parent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( holder Ġas ĠNews ViewHolder ). bind ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist [ position ] ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġholder . item View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Listener ?. let Ġ{ Ġit 1 Ġ-> Ġit 1 ( list [ position ]) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġlist . size ĊĊĠĠĠ Ġclass ĠNews ViewHolder Ġconstructor ( item View : ĠView ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconstructor ( parent : ĠViewGroup ) Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . list _ item _ news , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠNews ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . let Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . let Ġ{ it 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit 1 . pic Url ?. isNotEmpty Ġ{ it 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . news IV . load Image ( item View . context , it 2 , null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . desc TV . text Ġ= Ġit 1 . title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . date TV . text Ġ= Ġit 1 . date ?. toDate For News ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Binding Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ[" bind : set News ", Ġ" bind : set News ClickListener "], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire All Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfun Ġset News ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview : ĠRecyclerView ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist : ĠList < News > ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Listener : Ġ( News ) Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. let Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . adapter . isNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . addItem Decoration ( RecyclerView Margin Decoration ( 3 , 0 , Ġ 0 , Ġ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . layout Manager Ġ= ĠLinearLayoutManager ( v . context , ĠRecyclerView . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist ?. let Ġ{ it 1 -> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . adapter Ġ= ĠNews Adapter ( it 1 Ġas ĠArrayList < News >, Ġclick Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . adapter ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }