package Ġdev . per cul a . rain y days . ui Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . paging . Paged ListAdapter Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . sds md g . har j ot . vect orm aster . Vector Master View Ċ import Ġdev . per cul a . rain y days . R Ċ import Ġdev . per cul a . rain y days . model . Rain Data Ċ Ċ class ĠR ain Data Adapter ( val Ġmetric Units : ĠLive Data < Boolean >) Ġ: ĠP aged ListAdapter < Rain Data , ĠR ain Data Adapter . Rain Data ViewHolder >( object Ġ: ĠDiff Util . Item Callback < Rain Data >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠR ain Data , Ġnew Item : ĠR ain Data ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠR ain Data , Ġnew Item : ĠR ain Data ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item . station Ġ== Ġnew Item . station Ġ&& Ġold Item . date Ġ== Ġnew Item . date ĊĠĠĠ Ġ} Ċ }) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmaximum Rain Gauge Value : ĠDouble Ġ= Ġ 3 . 0 ĊĠĠĠ Ġprivate Ġval Ġmin Trim Path Ġ= Ġ 0 . 0 5 f Ġ// ĠTo Ġget Ġrounded Ġstart ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To RecyclerView ( re cyclerView : ĠRecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attached To RecyclerView ( re cyclerView ) ĊĊĠĠĠĠĠĠĠ Ġ( re cyclerView Ġas ? ĠLifecycle Owner )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmetric Units . observe ( it , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠR ain Data ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ Ġobj ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( it ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . prec ip itation ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Name Ġ= Ġholder . item View . context ?. getString ( R . string . rain _ gauge ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġholder . rain Gauge . getPath Model ByName ( path Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrim Path End Ġ= Ġ(( Math . min ( it , Ġmaximum Rain Gauge Value )*( 1 f - min Trim Path ))/ maximum Rain Gauge Value ). toFloat () Ġ+ Ġmin Trim Path ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath ?. trim Path Start Ġ= Ġ 0 . 0 5 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath ?. trim Path End Ġ= Ġtrim Path End ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . rain Gauge . update () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠR ain Data ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠData Binding Util . inflate < ViewData Binding >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Inflater , ĠR . layout . item _ rain _ data , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠR ain Data ViewHolder ( binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠR ain Data ViewHolder ( binding : ĠView Data Binding ) Ġ: ĠBase ViewHolder < Rain Data >( binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrain Gauge Ġ= ĠitemView . findViewById < Vector Master View >( R . id . rain _ gauge ) ĊĠĠĠ Ġ} Ċ }