package Ġcom . vol tek . news feed . presentation . ui . new ss ources Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . annotation . Drawable Res Ċ import Ġandroid . support . v 7 . util . Diff Util Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . CheckBox Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . jak ew h art on . r xb ind ing 2 . view . Rx View Ċ import Ġcom . vol tek . news feed . R Ċ import Ġcom . vol tek . news feed . presentation . entity . Source UI Ċ import Ġcom . vol tek . news feed . utils . Source Diff Callback Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . subjects . Publish Subject Ċ import Ġkotlinx . android . synt hetic . main . item _ source . view .* Ċ Ċ class ĠNews Sources Adapter ( private Ġval ĠmContext : ĠContext , Ġprivate Ġvar Ġm Items : ĠMutable List < Source UI >) ĊĠĠĠ Ġ: ĠRecyclerView . Adapter < News Sources Adapter . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm On Item Click Subject : ĠPublish Subject < Source UI > Ġ= ĠPublish Subject . create () ĊĊĠĠĠ Ġfun Ġget On Item Click Observable (): ĠObservable < Source UI > Ġ= Ġm On Item Click Subject ĊĊĠĠĠ Ġclass ĠViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname : ĠTextView Ġ= Ġview . tv _ name ĊĠĠĠĠĠĠĠ Ġval Ġdescription : ĠTextView Ġ= Ġview . tv _ description ĊĠĠĠĠĠĠĠ Ġval Ġcategory : ĠTextView Ġ= Ġview . tv _ category ĊĠĠĠĠĠĠĠ Ġval Ġcountry : ĠImageView Ġ= Ġview . im _ country ĊĠĠĠĠĠĠĠ Ġval Ġenabled : ĠCheckBox Ġ= Ġview . cb _ enable ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġlayout Inflater . inflate ( R . layout . item _ source , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠNews Sources Adapter . ViewHolder ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġm Items [ position ] ĊĊĠĠĠĠĠĠĠ ĠRx View . click s ( holder !!. item View ). subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . enabled . isChecked Ġ= Ġ! holder . enabled . isChecked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm On Item Click Subject . onNext ( item ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġholder . name . text Ġ= Ġitem . name ĊĠĠĠĠĠĠĠ Ġholder . description . text Ġ= Ġitem . description ĊĠĠĠĠĠĠĠ Ġholder . category . text Ġ= Ġitem . category ĊĠĠĠĠĠĠĠ Ġholder . enabled . isChecked Ġ= Ġitem . isEnabled ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . country ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" au " Ġ-> Ġload Image ( holder . country , ĠR . drawable . ic _ au str alia _ 2 4 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" de " Ġ-> Ġload Image ( holder . country , ĠR . drawable . ic _ ger many _ 2 4 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" gb " Ġ-> Ġload Image ( holder . country , ĠR . drawable . ic _ unit ed _ king dom _ 2 4 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" in " Ġ-> Ġload Image ( holder . country , ĠR . drawable . ic _ ind ia _ 2 4 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" it " Ġ-> Ġload Image ( holder . country , ĠR . drawable . ic _ it aly _ 2 4 dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" us " Ġ-> Ġload Image ( holder . country , ĠR . drawable . ic _ unit ed _ states _ 2 4 dp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġm Items . size ĊĊĠĠĠ Ġfun Ġreplace ( items : ĠList < Source UI >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdiff Callback Ġ= ĠSource Diff Callback ( m Items , Ġitems ) ĊĠĠĠĠĠĠĠ Ġval Ġdiff Result Ġ= ĠDiff Util . calculate Diff ( diff Callback ) ĊĊĠĠĠĠĠĠĠ Ġthis . m Items . clear () ĊĠĠĠĠĠĠĠ Ġthis . m Items . addAll ( items ) ĊĠĠĠĠĠĠĠ Ġdiff Result . dispatch Updates To ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Image ( imageView : ĠImageView , Ġ@ Drawable Res Ġres Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠG lide . with ( mContext ). load (" "). error ( res Id ). into ( imageView ) ĊĠĠĠ Ġ} Ċ } Ċ