package Ġcom . tech nip ix l . fil rouge . ui . adapters Ċ Ċ import Ġandroid . speech . tts . Text ToS peech Ċ import Ġandroid . text . Html Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . core . text . Html Compat Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . tech nip ix l . fil rouge . R Ċ import Ġcom . tech nip ix l . fil rouge . databinding . Jo ke Item Binding Ċ import Ġcom . tech nip ix l . fil rouge . network . models . Jo ke Model Ċ import Ġcom . tech nip ix l . fil rouge . utils . Intent Utils Ċ import Ġjava . util .* Ċ Ċ class ĠJo ke Adapter : ĠRecyclerView . Adapter < Jo ke Adapter . Jo ke ViewHolder >() Ġ{ ĊĊĠĠĠ Ġvar Ġmodels : ĠList < Jo ke Model >? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval ĠtextColor Resources Ġ= Ġmutable ListOf ( ĊĠĠĠĠĠĠĠ ĠR . color . green _ gradient _ start , ĊĠĠĠĠĠĠĠ ĠR . color . green _ gradient _ end , ĊĠĠĠĠĠĠĠ ĠR . color . dark _ blue , ĊĠĠĠĠĠĠĠ ĠR . color . medium _ blue , ĊĠĠĠĠĠĠĠ ĠR . color . black ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠJo ke ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠJo ke Item Binding . inflate ( LayoutInflater . from ( parent . context ), Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġcolor Resource Ġ= ĠtextColor Resources . random () ĊĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġbinding . root . resources . getColor ( color Resource , Ġnull ) ĊĠĠĠĠĠĠĠ Ġreturn ĠJo ke ViewHolder ( binding , Ġcolor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠJo ke ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmodels ?. get ( position )?. let Ġ{ Ġmodel Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( model ) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġkotlin . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . unbind () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Re cyc led ( holder : ĠJo ke ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Re cyc led ( holder ) ĊĠĠĠĠĠĠĠ Ġholder . unbind () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmodels ?. size Ġ?: Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠJo ke ViewHolder ( private Ġvar Ġview Binding : ĠJo ke Item Binding , Ġ@ Color Int Ġval ĠtextColor : ĠInt ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( view Binding . root ), ĊĠĠĠĠĠĠĠ ĠBind able < Jo ke Model >, ĊĠĠĠĠĠĠĠ ĠText ToS peech . OnInit Listener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġt ts Initialization Status Ġ= ĠText ToS peech . STOP PED ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbind ( model : ĠJo ke Model ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt ts Ġ= ĠText ToS peech ( view Binding . root . context , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . jo ke TextView . setTextColor ( textColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . jo ke TextView . text Ġ= ĠHtml . from Html ( model . jo ke , ĠHtml Compat . FROM _ HTML _ MODE _ LEG ACY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . share Image Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent Utils . share ( model . jo ke , Ġview Binding . root . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . play Image Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( tts Initialization Status == Text ToS peech . SUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ts . language Ġ= ĠLocale . US ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ts . speak ( model . jo ke , ĠText ToS peech . QUEUE _ FLUSH , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġun bind () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . jo ke TextView . text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . share Image Button . setOnClickListener ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Init ( status : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt ts Initialization Status Ġ= Ġstatus ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }