package Ġir . ah fz . rent car . ui . book Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġir . ah fz . rent car . R Ċ import Ġir . ah fz . rent car . io . model . Extra Response Ċ import Ġkotlinx . android . synt hetic . main . item _ book _ option . view .* Ċ Ċ class ĠOption Adapter Ġ: ĠRecyclerView . Adapter < Option Adapter . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġextras Ġ= ĠArrayList < Extra Response . Extra >() ĊĠĠĠ Ġprivate Ġvar Ġis Selected Ġ= ĠArrayList < Boolean >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ= ĊĠĠĠĠĠĠĠ ĠViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ). inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ book _ option , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġextras . size ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . item View . tv Option Title . text Ġ= Ġextras [ position ]. description ĊĠĠĠĠĠĠĠ Ġholder . item View . iv Want It . isChecked Ġ= Ġis Selected [ position ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetData ( extra Response : ĠExtra Response ) Ġ{ ĊĠĠĠĠĠĠĠ Ġextras . addAll ( extra Response . extras !! ) ĊĠĠĠĠĠĠĠ Ġis Selected . removeAll ( isSelected ) ĊĠĠĠĠĠĠĠ Ġextras . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Selected . add ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Checked Ġ= Ġ! isSelected [ adapter Position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Selected . set ( adapter Position , Ġis Checked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . iv Want It . isChecked Ġ= Ġis Checked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Changed ( adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ