package Ġit . c zer win ski . android . charts . demo Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ Ċ class ĠData Points ListAdapter ( ĊĠĠĠ Ġprivate Ġval Ġon Item Clicked : Ġ( position : ĠInt ) Ġ-> ĠUnit Ċ ) Ġ: ĠRecyclerView . Adapter < DataPoint ViewHolder >(), ĠObserver < List < Float >> Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġdata Points : ĠList < Float > Ġ= Ġempty List () ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġdata Points . size ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠData Point ViewHolder Ġ= ĊĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . data _ point _ list _ item , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ ĠData Point ViewHolder ( it ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠData Point ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( position , Ġdata Points [ position ], Ġon Item Clicked ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonChanged ( value : ĠList < Float > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Points Ġ= Ġvalue . or Empty () ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠData Point ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠtextView : ĠTextView ? Ġ= ĠitemView . findViewById ( R . id . text ) ĊĊĠĠĠ Ġfun Ġbind ( index : ĠInt , Ġvalue : ĠFloat , Ġon Item Clicked : Ġ( position : ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠtextView ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġcontext . resources ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getString ( R . string . format _ chart _ data , Ġindex Ġ+ Ġ 1 , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ Ġon Item Clicked ( index ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ