// package Ġcom . fen bi . me gre z . app . exercise scope . cell item Ċ // Ċ // import Ġandroid . content . Context Ċ // import Ġandroid . view . LayoutInflater Ċ // import Ġandroid . view . View Ċ // import Ġandroid . view . ViewGroup Ċ // import Ġandroid . widget . TextView Ċ // import Ġcom . fen bi . me gre z . app . dev kit . dp 2 px Ċ // import Ġcom . fen bi . me gre z . app . exercise scope . flow layout . Choice Group Ċ // import Ġcom . fen bi . me gre z . app . exercise scope . flow layout . Choice Tag Ċ // import Ġcom . fen bi . me gre z . app . me gre z View . Fixed Flow Layout Ċ // import Ġcom . fen bi . me gre z . app . me gre z View . aut op ager . Auto Pager View Ċ // import Ġcom . fen bi . me gre z . app . me gre z View . aut op ager . item . Abstract Cell Item Ċ // import Ġcom . fen bi . me gre z . app . me gre z View . aut op ager . item . IP ager ViewHolder Creator Ċ // import Ġcom . fen bi . me gre z . app . me gre z View . aut op ager . item . pager ViewHolder Creator Ex Ċ // import Ġcom . y uan f ud ao . android . me gre z . exercise scope . R Ċ // Ċ // /** Ċ // Ġ* ĠCreated Ġby Ġle i . j ial in Ġon Ġ 2 0 2 1 / 4 / 2 2 Ċ // Ġ*/ Ċ // Ċ // class ĠChoice Group Cell Item ( Ċ // ĠĠĠ Ġval Ġgroup Num : ĠInt , Ċ // ĠĠĠ Ġvar Ġchoice Group : ĠChoice Group <* >, Ċ // ĠĠĠ Ġprivate Ġval ĠonSelect : Ġ( group Num : ĠInt , Ġindex In List : ĠInt , Ġchoice : ĠChoice Tag < *> ?) Ġ-> ĠUnit Ċ // ) Ġ: Ċ // ĠĠĠ ĠAbstract Cell Item < Choice Group Cell Item . ViewHolder >() Ġ{ Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġparent : ĠViewGroup ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġholder . tv Group Title . text Ġ= Ġchoice Group . group Title Ċ // ĠĠĠĠĠĠĠ Ġholder . tv Group Title . visibility Ġ= Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( choice Group . group Title . isNull OrEmpty ()) ĠView . GONE Ġelse ĠView . GONE Ċ // ĠĠĠĠĠĠĠ Ġrefresh Flow Layout ( holder . flow Layout , Ġchoice Group . choices ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġprivate Ġfun Ġrefresh View ( view : ĠView ?, Ġindex : ĠInt , Ġtag : ĠChoice Tag < *> ): ĠView ? Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġtv Tag Ġ= Ġview ?. findViewById < TextView >( R . id . tv _ text ) Ċ // ĠĠĠĠĠĠĠ Ġtv Tag ?. text Ġ= Ġtag . name Ċ // ĠĠĠĠĠĠĠ Ġview ?. apply Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġthis . tag Ġ= Ġtag Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġthis . isSelected Ġ= Ġtag . is Select Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġthis . setOnClickListener Ġ{ Ġv Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag Select Ġ= Ġv . tag Ġas ? ĠChoice Tag < *> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSelect . invoke ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Num , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchoice Group . choices . indexOf ( tag Select ), Ġtag Select Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġview Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġprivate Ġfun Ġrefresh Flow Layout ( flow Layout : ĠFixed Flow Layout , Ġchoices : ĠList < Choice Tag <* >> ?) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( choices . isNull OrEmpty ()) Ġreturn Ċ // ĠĠĠĠĠĠĠ Ġchoices . forEach Indexed Ġ{ Ġindex , Ġtag Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġflow Layout . getChild At ( index ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġcreate View ( flow Layout ). also Ġ{ Ġflow Layout . addView ( it ) Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh View ( view , Ġindex , Ġtag ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġprivate Ġfun Ġcreate View ( view Group : ĠViewGroup ): ĠView Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn ĠLayoutInflater . from ( view Group . context ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . exercise scope _ single _ choice _ select , Ġview Group , Ġfalse ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġfirst Ass ume Measure Height ( context : ĠContext ): ĠInt Ġ= Ġcontext . dp 2 px ( 6 0 ) Ċ // Ċ // ĠĠĠ Ġoverride Ġval Ġpager ViewHolder Creator : ĠIP ager ViewHolder Creator < ViewHolder > Ġ= Ċ // ĠĠĠĠĠĠĠ Ġpager ViewHolder Creator Ex Ġ{ Ġview : ĠView Ġ-> ĠViewHolder ( view ) Ġ} Ċ // ĠĠĠ Ġoverride Ġval Ġlayout Res : ĠInt Ċ // ĠĠĠĠĠĠĠ Ġget () Ġ= ĠR . layout . exercise scope _ choice group _ item _ flow layout Ċ // Ċ // ĠĠĠ Ġclass ĠViewHolder Ġinternal Ġconstructor ( item View : ĠView ) Ġ: ĠAuto Pager View . ViewHolder ( item View ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġtv Group Title : ĠTextView Ġ= ĠitemView . findViewById ( R . id . title ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġflow Layout : ĠFixed Flow Layout Ġ= ĠitemView . findViewById ( R . id . flow _ layout ) Ċ // ĠĠĠ Ġ} Ċ //}