package Ġcom . tt en ush ko . android m vi . demo . presentation . screens . home . common Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . tt en ush ko . android m vi . demo . R Ċ import Ġcom . tt en ush ko . android m vi . demo . domain . weather . model . Place Ċ import Ġkotlinx . android . synt hetic . main . item _ place . view .* Ċ Ċ class ĠPlace Adapter ( ĊĠĠĠ Ġctx : ĠContext , ĊĠĠĠ Ġprivate Ġval Ġcallback : ĠCallback Ċ ) Ġ: ĠRecyclerView . Adapter < Place Adapter . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( ctx ) ĊĠĠĠ Ġprivate Ġvar Ġitems : ĠList < Place > Ġ= ĠlistOf () ĊĊĠĠĠ Ġfun Ġset ( items : ĠList < Place >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . items Ġ= Ġitems ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . items . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . items Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetItem At ( position : ĠInt ): ĠPlace Ġ= ĊĠĠĠĠĠĠĠ Ġitems [ position ] ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= ĊĠĠĠĠĠĠĠ Ġitems . size ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( layout Inflater . inflate ( R . layout . item _ place , Ġparent , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplace Ġ= Ġitems [ position ] ĊĠĠĠĠĠĠĠ Ġholder . bind ( place ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Item Clicked ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback . on Item Clicked ( items [ position ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder ( ĊĠĠĠĠĠĠĠ Ġroot View : ĠView ĊĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( root View ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Position . let Ġ{ Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( RecyclerView . NO _ POSITION Ġ!= Ġposition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Item Clicked ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( place : ĠPlace ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . place Title . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ place . name }, Ġ${ place . county Code . toUpperCase () }" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . place Location . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"% . 6 f , Ġ%. 6 f ". format ( place . location . latitude , Ġplace . location . longitude ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠCallback Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Item Clicked ( place : ĠPlace ) ĊĠĠĠ Ġ} Ċ }