package Ġcom . ge bet o . beat box . sound Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . ge bet o . beat box . main .* Ċ import Ġcom . ge bet o . beat box . R Ċ import Ġcom . ge bet o . beat box . databinding . ListItem Sound Binding ĊĊ Ċ class ĠSound Adapter ( private Ġval Ġbeat Box : ĠBe at Box Model ) Ġ: ĠRecyclerView . Adapter < Sound Adapter . Sound Holder >() Ġ{ ĊĠĠĠ Ġprivate Ġval Ġsounds Ġ= Ġarray ListOf < Sound Model >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠSound Holder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠData Binding Util ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate < ListItem Sound Binding >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinflater , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . list _ item _ sound , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn ĠSound Holder ( binding , Ġbeat Box ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġsounds . size ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠSound Holder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsound Ġ= Ġsounds [ position ] ĊĠĠĠĠĠĠĠ Ġholder . bind ( sound ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Sounds ( sounds : ĠList < Sound Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . sounds . clear () ĊĠĠĠĠĠĠĠ Ġthis . sounds . addAll ( sounds ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠSound Holder ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbinding : ĠListItem Sound Binding , ĊĠĠĠĠĠĠĠ Ġbeat Box : ĠBe at Box Model ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= ĠSound ViewModel ( beat Box ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( sound : ĠSound Model ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . viewModel !!. sound Ġ= Ġsound ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . execute Pending Bindings () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ