package Ġcom . j im z jy . speech reh abil itation . common Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . j im z jy . speech reh abil itation . R Ċ import Ġcom . j im z jy . speech reh abil itation . common . widget . L attice Pad Ċ import Ġcom . j im z jy . speech reh abil itation . common . widget . Point Position Ċ import Ġcom . j im z jy . speech reh abil itation . room . l attice . L attice Ċ import Ġkotlinx . android . synt hetic . main . item _ single _ choice _ rv . view .* Ċ import Ġkotlinx . android . synt hetic . main . item _ words _ choice _ rv . view .* Ċ Ċ class ĠSingle Word Choice RV Adapter ( context : ĠContext ?, Ġprivate Ġval Ġm Choice List : ĠList < String >) Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĠĠĠ Ġprivate Ġval Ġm Inflater Ġ= ĠLayoutInflater . from ( context ) ĊĠĠĠ Ġprivate Ġvar Ġm Click Callback : Ġ(( String ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder ( root : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( root ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext : ĠTextView Ġ= Ġroot . item _ single _ choice _ tv ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Click Callback ?. invoke ( m Choice List [ adapter Position ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( m Inflater . inflate ( R . layout . item _ single _ choice _ rv , Ġparent , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Choice List . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠviewHolder Ġ= Ġholder Ġas ĠViewHolder ĊĊĠĠĠĠĠĠĠ ĠviewHolder . text . text Ġ= Ġm Choice List [ position ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset OnClick Callback ( callback : Ġ( String ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Click Callback Ġ= Ġcallback ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠWidget List Dialog RV Adapter ( context : ĠContext ?, Ġprivate Ġval Ġm DataList : ĠList < String >) Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĠĠĠ Ġprivate Ġval Ġm Inflater Ġ= ĠLayoutInflater . from ( context ) ĊĠĠĠ Ġprivate Ġvar Ġm Click Callback : Ġ(( position : ĠInt ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder ( root : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( root ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname : ĠTextView Ġ= Ġroot . findViewById ( R . id . widget _ list _ dialog _ item _ tv ) ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Click Callback ?. invoke ( adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( m Inflater . inflate ( R . layout . widget _ list _ dialog _ item , Ġparent , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm DataList . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠviewHolder Ġ= Ġholder Ġas ĠViewHolder ĊĠĠĠĠĠĠĠ ĠviewHolder . name . text Ġ= Ġm DataList [ position ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset OnClick Callback ( callback : Ġ( position : ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Click Callback Ġ= Ġcallback ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠWord s Choice RV Adapter ( context : ĠContext ?, Ġprivate Ġval Ġm Choice List : ĠList < L attice >) Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĠĠĠ Ġprivate Ġval Ġm Inflater Ġ= ĠLayoutInflater . from ( context ) ĊĠĠĠ Ġprivate Ġvar Ġm Click Callback : Ġ(( String ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder ( root : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( root ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext : ĠTextView Ġ= Ġroot . item _ words _ tv ĊĠĠĠĠĠĠĠ Ġval Ġlattice Pad : ĠL attice Pad Ġ= Ġroot . item _ words _ l attice _ pad ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot . item _ words _ tv . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Click Callback ?. invoke ( m Choice List [ adapter Position ]. word ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot . item _ words _ l attice _ cover _ view . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Click Callback ?. invoke ( m Choice List [ adapter Position ]. word ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( m Inflater . inflate ( R . layout . item _ words _ choice _ rv , Ġparent , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Choice List . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠviewHolder Ġ= Ġholder Ġas ĠViewHolder ĊĊĠĠĠĠĠĠĠ ĠviewHolder . text . text Ġ= Ġm Choice List [ position ]. word ĊĊĠĠĠĠĠĠĠ Ġm Choice List [ position ]. l attice . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Point Position >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . split ('| '). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Ġ= Ġit . split (' Ġ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Point Position ( p [ 0 ]. toInt (), Ġp [ 1 ]. toInt ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . l attice Pad . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . text . text Size Ġ= Ġ 1 6 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . l attice Pad . set Point Position ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . l attice Pad . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . text . text Size Ġ= Ġ 2 4 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset OnClick Callback ( callback : Ġ( String ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Click Callback Ġ= Ġcallback ĊĠĠĠ Ġ} Ċ }