package Ġcn . cq aut ot est . sun ny be ach . ui . adapter Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Base Expand able ListAdapter Ċ import Ġandroid . widget . CheckBox Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . text . Html Compat Ċ import Ġcn . cq aut ot est . sun ny be ach . R Ċ import Ġcn . cq aut ot est . sun ny be ach . app . App Application Ċ import Ġcn . cq aut ot est . sun ny be ach . model . Fish P ond Comment Ċ import Ġcn . cq aut ot est . sun ny be ach . util . Date Helper Ċ import Ġcn . cq aut ot est . sun ny be ach . util . dp Ċ import Ġcn . cq aut ot est . sun ny be ach . util . set Round Rect Bg Ċ import Ġcom . bump tech . glide . G lide Ċ Ċ /** Ċ Ġ* Ġauthor Ġ: ĠA ĠL on ely ĠCat Ċ Ġ* Ġgithub Ġ: Ġhttps :// github . com / an ji emo / Sun ny Be ach Ċ Ġ* Ġtime ĠĠ Ġ: Ġ 2 0 2 1 / 7 / 1 1 Ċ Ġ* Ġdesc ĠĠ Ġ: Ġ é±¼ å¡ ĺ è¯¦æĥħ è¯Ħè®º åĪĹè¡¨ çļĦ éĢĤ éħį åĻ¨ Ċ Ġ*/ Ċ class ĠE lv Comment Adapter Ġ: ĠBase Expand able ListAdapter () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Inflater : ĠLayoutInflater Ġ= ĊĠĠĠĠĠĠĠ ĠApp Application . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getSystem Service ( Context . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ĠLayoutInflater ĊĠĠĠ Ġprivate Ġval Ġreply Bg Color Ġ= ĠColor . parse Color ("# F 5 F 5 F 5 ") ĊĠĠĠ Ġprivate Ġval Ġm GroupData : ĠMutable List < Fish P ond Comment . Fish P ond Comment Item > Ġ= Ġarray ListOf () ĊĠĠĠ Ġprivate Ġval Ġm Child Data : ĠMutable List < List < Fish P ond Comment . Fish P ond Comment Item . Sub Comment >> Ġ= ĊĠĠĠĠĠĠĠ Ġarray ListOf () ĊĊĠĠĠ Ġfun ĠsetData ( ĊĠĠĠĠĠĠĠ Ġgroup Data : ĠList < Fish P ond Comment . Fish P ond Comment Item >, ĊĠĠĠĠĠĠĠ Ġchild Data : ĠList < List < Fish P ond Comment . Fish P ond Comment Item . Sub Comment >> ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm GroupData . clear () ĊĠĠĠĠĠĠĠ Ġm Child Data . clear () ĊĠĠĠĠĠĠĠ Ġm GroupData . addAll ( group Data ) ĊĠĠĠĠĠĠĠ Ġm Child Data . addAll ( child Data ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Group Count (): ĠInt Ġ= Ġm GroupData . size ĊĊĠĠĠ Ġoverride Ġfun Ġget Children Count ( group Position : ĠInt ): ĠInt Ġ= Ġm Child Data [ group Position ]. size ĊĊĠĠĠ Ġoverride Ġfun Ġget Group ( group Position : ĠInt ): ĠFish P ond Comment . Fish P ond Comment Item Ġ= ĊĠĠĠĠĠĠĠ Ġm GroupData [ group Position ] ĊĊĠĠĠ Ġoverride Ġfun Ġget Child ( ĊĠĠĠĠĠĠĠ Ġgroup Position : ĠInt , ĊĠĠĠĠĠĠĠ Ġchild Position : ĠInt ĊĠĠĠ Ġ): ĠFish P ond Comment . Fish P ond Comment Item . Sub Comment Ġ= ĊĠĠĠĠĠĠĠ Ġm Child Data [ group Position ][ child Position ] ĊĊĠĠĠ Ġoverride Ġfun Ġget GroupId ( group Position : ĠInt ): ĠLong Ġ= Ġgroup Position . to Long () ĊĊĠĠĠ Ġoverride Ġfun Ġget Child Id ( group Position : ĠInt , Ġchild Position : ĠInt ): ĠLong Ġ= Ġchild Position . to Long () ĊĊĠĠĠ Ġoverride Ġfun Ġhas Stable Ids (): ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġget Group View ( ĊĠĠĠĠĠĠĠ Ġgroup Position : ĠInt , ĊĠĠĠĠĠĠĠ Ġis Expanded : ĠBoolean , ĊĠĠĠĠĠĠĠ ĠconvertView : ĠView ?, ĊĠĠĠĠĠĠĠ Ġparent : ĠViewGroup ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv : ĠView Ġ= ĠconvertView Ġ?: Ġnew Group View ( parent ) ĊĠĠĠĠĠĠĠ Ġbind Group View ( v , Ġis Expanded , Ġget Group ( group Position )) ĊĠĠĠĠĠĠĠ Ġreturn Ġv ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Child View ( ĊĠĠĠĠĠĠĠ Ġgroup Position : ĠInt , ĊĠĠĠĠĠĠĠ Ġchild Position : ĠInt , ĊĠĠĠĠĠĠĠ Ġis Last Child : ĠBoolean , ĊĠĠĠĠĠĠĠ ĠconvertView : ĠView ?, ĊĠĠĠĠĠĠĠ Ġparent : ĠViewGroup ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv : ĠView Ġ= ĠconvertView Ġ?: Ġnew Child View ( parent ) ĊĠĠĠĠĠĠĠ Ġbind Child View ( v , Ġis Last Child , Ġget Child ( group Position , Ġchild Position )) ĊĠĠĠĠĠĠĠ Ġreturn Ġv ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnew Group View ( parent : ĠViewGroup ?): ĠView Ġ= ĊĠĠĠĠĠĠĠ Ġm Inflater . inflate ( R . layout . fish _ p ond _ detail _ comm end _ list , Ġparent , Ġfalse ) ĊĊĠĠĠ Ġprivate Ġfun Ġnew Child View ( parent : ĠViewGroup ?): ĠView Ġ= ĊĠĠĠĠĠĠĠ Ġm Inflater . inflate ( R . layout . fish _ p ond _ detail _ comm end _ list , Ġparent , Ġfalse ) ĊĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġprivate Ġfun Ġbind Group View ( ĊĠĠĠĠĠĠĠ Ġv : ĠView , ĊĠĠĠĠĠĠĠ Ġis Expanded : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġgroup : ĠFish P ond Comment . Fish P ond Comment Item ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġv . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfl Avatar Container Ġ= ĠfindViewById < View >( R . id . fl _ avatar _ container ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiv Avatar Ġ= ĠfindViewById < ImageView >( R . id . iv _ fish _ p ond _ avatar ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcb Nick name Ġ= ĠfindViewById < CheckBox >( R . id . cb _ fish _ p ond _ nick _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv Desc Ġ= ĠfindViewById < TextView >( R . id . tv _ fish _ p ond _ desc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv Reply Ġ= ĠfindViewById < TextView >( R . id . tv _ reply _ msg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfl Avatar Container . background Ġ= Ġif Ġ( group . vip ) ĠContext Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . avatar _ circle _ vip _ ic ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( group . avatar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . mip map . ic _ default _ avatar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . mip map . ic _ default _ avatar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. circle Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( iv Avatar ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcb Nick name . isChecked Ġ= Ġis Expanded ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( group . sub Comments . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcb Nick name . clear Ar rows Compound Draw ables With Intr insic Bounds () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcb Nick name . set Ar rows Compound Draw ables With Intr insic Bounds () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcb Nick name . setTextColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , Ġif Ġ( group . vip ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . pink ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . black ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcb Nick name . text Ġ= Ġgroup . nickname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Desc . text Ġ= ĠHtml Compat . from Html ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ group . position } Ġ< font Ġcolor =\" # 0 0 8 4 ff \"> @ ${ group . company }</ font > ĠÂ· Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠDate Helper . transform 2 Friendly TimeSpan By Now ("${ group . create Time }: 0 0 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHtml Compat . FROM _ HTML _ MODE _ LEG ACY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Reply . set Round Rect Bg ( color Ġ= Ġreply Bg Color , Ġcorner Radius Ġ= Ġ 4 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Reply . text Ġ= ĠHtml Compat . from Html ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" åĽŀå¤į Ġ< font Ġcolor =\" # 0 0 8 4 ff \"> @ æ¥¼ ä¸» </ font > Ġ ï¼ļ ${ group . content }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHtml Compat . FROM _ HTML _ MODE _ LEG ACY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġprivate Ġfun Ġbind Child View ( ĊĠĠĠĠĠĠĠ Ġv : ĠView , ĊĠĠĠĠĠĠĠ Ġis Last Child : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġchild : ĠFish P ond Comment . Fish P ond Comment Item . Sub Comment ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġv . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Padding ( 5 0 . dp , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfl Avatar Container Ġ= ĠfindViewById < View >( R . id . fl _ avatar _ container ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiv Avatar Ġ= ĠfindViewById < ImageView >( R . id . iv _ fish _ p ond _ avatar ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcb Nick name Ġ= ĠfindViewById < TextView >( R . id . cb _ fish _ p ond _ nick _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv Desc Ġ= ĠfindViewById < TextView >( R . id . tv _ fish _ p ond _ desc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv Reply Ġ= ĠfindViewById < TextView >( R . id . tv _ reply _ msg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfl Avatar Container . background Ġ= Ġif Ġ( child . vip ) ĠContext Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . avatar _ circle _ vip _ ic ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( child . avatar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . mip map . ic _ default _ avatar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . mip map . ic _ default _ avatar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. circle Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( iv Avatar ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcb Nick name . setTextColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , Ġif Ġ( child . vip ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . pink ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . black ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcb Nick name . clear Ar rows Compound Draw ables With Intr insic Bounds () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcb Nick name . text Ġ= Ġchild . nickname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Desc . text Ġ= ĠHtml Compat . from Html ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ child . position } < font Ġcolor =\" # 0 0 8 4 ff \"> @ ${ child . company }</ font > ĠÂ· Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠDate Helper . transform 2 Friendly TimeSpan By Now ("${ child . create Time }: 0 0 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHtml Compat . FROM _ HTML _ MODE _ LEG ACY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Reply . set Round Rect Bg ( color Ġ= Ġreply Bg Color , Ġcorner Radius Ġ= Ġ 4 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Reply . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHtml Compat . from Html ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" åĽŀå¤į Ġ< font Ġcolor =\" # 0 0 8 4 ff \"> @ ${ child . target User Nick name }</ font > Ġ ï¼ļ ${ child . content }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHtml Compat . FROM _ HTML _ MODE _ LEG ACY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Child Selectable ( group Position : ĠInt , Ġchild Position : ĠInt ): ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġprivate Ġfun ĠTextView . clear Ar rows Compound Draw ables With Intr insic Bounds () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( null , Ġnull , Ġnull , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠTextView . set Ar rows Compound Draw ables With Intr insic Bounds () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Compound Draw ables With Intr insic Bounds ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . get Drawable ( context , ĠR . drawable . el v _ arrows _ selector ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }