package Ġcom . k ido zh . dis cu zh ub . adapter Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Activity Options Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics .* Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Html Ċ import Ġandroid . text . Html . Image Getter Ċ import Ġandroid . text . Html . Tag Handler Ċ import Ġandroid . text . Sp ann able String Ċ import Ġandroid . text . Sp anned Ċ import Ġandroid . text . style . Clickable Span Ċ import Ġandroid . text . style . Image Span Ċ import Ġandroid . text . style . Stri ke through Span Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroid . util . Log Ċ import Ġandroid . view .* Ċ import Ġandroid . widget .* Ċ import Ġandroidx . appcompat . graphics . drawable . Drawable Wrapper Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . text . Html Compat Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . recyclerview . widget . St agger ed Grid LayoutManager Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . integration . okhttp 3 . Ok Http Url Loader Ċ import Ġcom . bump tech . glide . load . DataSource Ċ import Ġcom . bump tech . glide . load . engine . G lide Exception Ċ import Ġcom . bump tech . glide . load . model . G lide Url Ċ import Ġcom . bump tech . glide . load . model . Lazy Headers Ċ import Ġcom . bump tech . glide . request . RequestListener Ċ import Ġcom . bump tech . glide . request . RequestOptions Ċ import Ġcom . bump tech . glide . request . target . Custom Target Ċ import Ġcom . bump tech . glide . request . target . Target Ċ import Ġcom . bump tech . glide . request . transition . Transition Ċ import Ġcom . k ido zh . dis cu zh ub . R Ċ import Ġcom . k ido zh . dis cu zh ub . activities . Full Image Activity Ċ import Ġcom . k ido zh . dis cu zh ub . activities . UserProfile Activity Ċ import Ġcom . k ido zh . dis cu zh ub . adapter . Post Adapter . Post ViewHolder Ċ import Ġcom . k ido zh . dis cu zh ub . entities . Dis cu z Ċ import Ġcom . k ido zh . dis cu zh ub . entities . Post Ċ import Ġcom . k ido zh . dis cu zh ub . entities . Thread Ċ import Ġcom . k ido zh . dis cu zh ub . entities . User Ċ import Ġcom . k ido zh . dis cu zh ub . entities . View Thread Query Status Ċ import Ġcom . k ido zh . dis cu zh ub . results . Thread Result Ċ import Ġcom . k ido zh . dis cu zh ub . utilities . Const Utils Ċ import Ġcom . k ido zh . dis cu zh ub . utilities . Network Utils Ċ import Ġcom . k ido zh . dis cu zh ub . utilities . Time Display Utils . Companion . getLocale Past Time String Ċ import Ġcom . k ido zh . dis cu zh ub . utilities . URL Utils Ċ import Ġcom . k ido zh . dis cu zh ub . utilities . User Preference Utils . conc ise RecyclerView Ċ import Ġcom . k ido zh . dis cu zh ub . utilities . User Preference Utils . is J ammer Contents Removed Ċ import Ġcom . k ido zh . dis cu zh ub . utilities . bbs Link Movement Method Ċ import Ġcom . k ido zh . dis cu zh ub . utilities . bbs Link Movement Method . On Link Clicked Listener Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġorg . xml . sax . XML Reader Ċ import Ġjava . io . ByteArray InputStream Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . io . InputStream Ċ import Ġjava . util .* Ċ import Ġjava . util . function . Bi Consumer Ċ import Ġjava . util . regex . Pattern ĊĊ Ċ val ĠBACK GROUND _ ALPHA Ġ= Ġ 2 5 Ċ val ĠPOST _ HIDDEN Ġ= Ġ 1 Ċ val ĠPOST _ WARN ED Ġ= Ġ 2 Ċ val ĠPOST _ RE VISED Ġ= Ġ 4 Ċ val ĠPOST _ MOB ILE Ġ= Ġ 8 Ċ Ċ class ĠPost Adapter ( private Ġval Ġb bs Info : ĠDis cu z , Ġprivate Ġval Ġuser : ĠUser ?, Ġview Thread Query Status : ĠView Thread Query Status ) Ġ: ĠRecyclerView . Adapter < Post ViewHolder >() Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġpost List : ĠList < Post > Ġ= ĠArrayList () ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG ," Value Ġnew Ġsize Ġ"+ value . size +" Ġold Ġsize Ġ"+ field . size ) ĊĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠDiff Util . calculate Diff ( Post . Companion . Diff Callback ( field , Ġvalue )) ĊĠĠĠĠĠĠĠ Ġresult . dispatch Updates To ( this ) ĊĠĠĠ Ġ} Ċ // ĠĠĠ Ġget () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġfield Ċ // ĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġpost Comment List : ĠMutable Map < String , ĠList < Thread Result . Comment >> Ġ= ĠHashMap () ĊĠĠĠ Ġprivate Ġvar Ġclient Ġ= ĠOk HttpClient () ĊĠĠĠ Ġprivate Ġvar Ġview Thread Query Status : ĠView Thread Query Status ĊĠĠĠ Ġprivate Ġvar Ġm Listener : Ġon Filter Changed ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġlistener : ĠAdapter View . On ItemClickListener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġreply Listener : Ġon Adapter Reply ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġon Link Clicked Listener : ĠOn Link Clicked ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġon Advance Option Clicked Listener : ĠOn Advance Option Clicked ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġauthor Id Ġ= Ġ 0 Ċ // ĠĠĠ Ġset ( value ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġ// Ġall Ġchanged Ċ // ĠĠĠĠĠĠĠ Ġnotify Item Range Changed ( 0 , post List . size ) Ċ // ĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue Ċ // ĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontext Ġ: ĠContext ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset Has Stable Ids ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear List () Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate List ( ArrayList ()) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Posts (): ĠList < Post >{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpost List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset Has Stable Ids ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate List ( new List : ĠList < Post > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( new List Ġ== Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG ," Recv Ġpost Ġlist Ġ"+ this . post List . size +" Ġnew Ġlist Ġ"+ new List . size ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠDiff Util . calculate Diff ( Post . Companion . Diff Callback ( post List , Ġnew List )) ĊĠĠĠĠĠĠĠ Ġthis . post List Ġ= Ġnew List ĊĠĠĠĠĠĠĠ Ġresult . dispatch Updates To ( this ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġfun Ġset Posts ( new List : ĠMutable List < Post >, Ġview Thread Query Status : ĠView Thread Query Status , Ġauthor Id : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġnew List . iterator () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpost Ġ= Ġiterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġremove Ġnullable Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( post . message Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . remove () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG ," set Ġpost Ġlist Ġ"+ this . post List . size +" Ġnew Ġlist Ġ"+ new List . size ) ĊĠĠĠĠĠĠĠ Ġthis . view Thread Query Status Ġ= Ġview Thread Query Status ĊĠĠĠĠĠĠĠ Ġthis . author Id Ġ= Ġauthor Id ĊĠĠĠĠĠĠĠ Ġupdate List ( new List ) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠĠ ĊĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Id ( position : ĠInt ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpost Ġ= Ġpost List [ position ] ĊĠĠĠĠĠĠĠ Ġreturn Ġpost . pid . to Long () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠPost ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext Ġ= Ġparent . context ĊĊĠĠĠĠĠĠĠ Ġclient Ġ= ĠNetwork Utils . get Preferred Client ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġlayout Id For ListItem Ġ= ĠR . layout . item _ post ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġshould Attach To Parent Immediate ly Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġreply Listener Ġ= Ġcontext Ġas Ġon Adapter Reply ĊĠĠĠĠĠĠĠ Ġon Link Clicked Listener Ġ= Ġcontext Ġas ĠOn Link Clicked ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġis ĠOn Advance Option Clicked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Advance Option Clicked Listener Ġ= Ġcontext Ġas ĠOn Advance Option Clicked ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( layout Id For ListItem , Ġparent , Ġshould Attach To Parent Immediate ly ) ĊĠĠĠĠĠĠĠ Ġreturn ĠPost ViewHolder ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠPost ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpost Ġ= Ġpost List [ position ] ĊĠĠĠĠĠĠĠ Ġif Ġ( post . author Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġholder . m Thread Publisher . text Ġ= Ġpost . author ĊĠĠĠĠĠĠĠ Ġif Ġ( post . author Id Ġ== Ġauthor Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . is Author Label . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . is Author Label . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġparse Ġstatus ĊĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= Ġpost . status ĊĊĠĠĠĠĠĠĠ Ġif Ġ( status Ġand ĠPOST _ HIDDEN Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Status Blocked View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Status Blocked View . set BackgroundColor ( context . getColor ( R . color . color P ome gran ate )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Status Blocked View . background . alpha Ġ= ĠBACK GROUND _ ALPHA ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Status Blocked View . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( status Ġand ĠPOST _ WARN ED Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Status Warn ed View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Status Warn ed View . set BackgroundColor ( context . getColor ( R . color . color Orange )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Status Warn ed View . background . alpha Ġ= ĠBACK GROUND _ ALPHA ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Status Warn ed View . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( status Ġand ĠPOST _ RE VISED Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Status Edited View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Status Edited View . set BackgroundColor ( context . getColor ( R . color . color Primary )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Status Edited View . background . alpha Ġ= ĠBACK GROUND _ ALPHA ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Status Edited View . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( status Ġand ĠPOST _ MOB ILE Ġ!= Ġ 0 Ġ&& Ġ! conc ise RecyclerView ( context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Status Mobile Icon . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Status Mobile Icon . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġdecode String Ġ= Ġpost . message ĊĠĠĠĠĠĠĠ Ġ// Ġextract Ġquote Ġmessage ĊĠĠĠĠĠĠĠ Ġ// String Ġquote Regex In Ver 4 Ġ= Ġ"^ < div Ġclass =. reply _ wrap . > .* ?</ div >< br Ġ/> "; ĊĠĠĠĠĠĠĠ Ġval Ġquote Regex In Ver 4 Ġ= Ġ"^ < div Ġclass =\" reply _ wrap \ ">( .+ ? )</ div >< br Ġ. >" ĊĊĠĠĠĠĠĠĠ Ġ// Ġremove Ġit Ġif Ġpossible ĊĠĠĠĠĠĠĠ Ġval Ġquote Pattern In Ver 4 Ġ= ĠPattern . compile ( quote Regex In Ver 4 , ĠPattern . DOT ALL ) ĊĠĠĠĠĠĠĠ Ġval Ġquote Matcher In Ver 4 Ġ= Ġquote Pattern In Ver 4 . matcher ( decode String ) ĊĠĠĠĠĠĠĠ Ġ// Ġdelete Ġit Ġfirst ĊĠĠĠĠĠĠĠ Ġif Ġ( quote Matcher In Ver 4 . find ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// decode String Ġ= Ġquote Matcher In Ver 4 . replaceAll (""); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquote String Ġ= Ġquote Matcher In Ver 4 . group ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Quote Content . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġset Ġhtml ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠHtml Tag Handler : ĠHtml Tag Handler Ġ= ĠHtml Tag Handler ( context , Ġholder . m Post Quote Content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsp Ġ= ĠHtml . from Html ( quote String , ĠHtml Compat . FROM _ HTML _ MODE _ LEG ACY , ĠPost Image Getter ( holder . m Post Quote Content ), ĠHtml Tag Handler ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsp ann able String Ġ= ĠSp ann able String ( sp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Quote Content . setText ( span nable String , ĠTextView . Buffer Type . SPAN N ABLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Quote Content . is Focus able Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Quote Content . setText Is Selectable ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Quote Content . movement Method Ġ= Ġb bs Link Movement Method ( On Link Clicked Listener Ġ{ Ġurl Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Link Clicked Listener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url . toLowerCase (). startsWith (" http :// ") Ġ|| Ġurl . toLowerCase (). startsWith (" https :// ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Link Clicked Listener !!. on Link Clicked ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Quote Content . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdecode String Ġ= Ġquote Matcher In Ver 4 . replaceAll ("") ĊĠĠĠĠĠĠĠ Ġ// Ġhandle Ġj ammer Ġcontents ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" is Ġremoved Ġcontents Ġ" Ġ+ Ġis J ammer Contents Removed ( context )) ĊĠĠĠĠĠĠĠ Ġif Ġ( is J ammer Contents Removed ( context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecode String Ġ= Ġdecode String . replace ("< font Ġclass =\" jam mer \"> .+ </ font >". to Regex (), Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdecode String Ġ= Ġdecode String . replace ("< span Ġstyle =\" display : none \"> .+ </ span >". to Regex (), Ġ"") ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġhtml Tag Handler : ĠHtml Tag Handler Ġ= ĠHtml Tag Handler ( context , Ġholder . m Content ) ĊĠĠĠĠĠĠĠ Ġval Ġsp Ġ= ĠHtml . from Html ( decode String , ĠHtml Compat . FROM _ HTML _ MODE _ LEG ACY , ĠPost Image Getter ( holder . m Content ), Ġhtml Tag Handler ) ĊĠĠĠĠĠĠĠ Ġval Ġsp ann able String Ġ= ĠSp ann able String ( sp ) ĊĠĠĠĠĠĠĠ Ġholder . m Content . setText ( span nable String , ĠTextView . Buffer Type . SPAN N ABLE ) ĊĠĠĠĠĠĠĠ Ġholder . m Content . is Focus able Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġholder . m Content . setText Is Selectable ( true ) ĊĠĠĠĠĠĠĠ Ġ// Ġhandle Ġlinks ĊĠĠĠĠĠĠĠ Ġholder . m Content . movement Method Ġ= Ġb bs Link Movement Method ( object Ġ: ĠOn Link Clicked Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Link Clicked ( url : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Link Clicked Listener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url . toLowerCase ( Locale . ROOT ). startsWith (" http :// ") Ġ|| Ġurl . toLowerCase ( Locale . ROOT ). startsWith (" https :// ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Link Clicked Listener !!. on Link Clicked ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// Ġsome Ġdis cu z Ġmay Ġreturn Ġa Ġnull Ġdb date line Ġfields ĊĠĠĠĠĠĠĠ Ġholder . m Publish Date . text Ġ= Ġget Locale Past Time String ( context , Ġpost . publish At ) ĊĠĠĠĠĠĠĠ Ġholder . m Thread Type . text Ġ= Ġcontext . getString ( R . string . post _ index _ number , Ġpost . position ) ĊĠĠĠĠĠĠĠ Ġvar Ġavatar _ num Ġ= Ġpost . author Id Ġ% Ġ 1 6 ĊĠĠĠĠĠĠĠ Ġif Ġ( avatar _ num Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġavatar _ num Ġ= Ġ- avatar _ num ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġavatar Resource Ġ= Ġcontext . resources . getIdentifier ( String . format (" avatar _% s ", Ġavatar _ num Ġ+ Ġ 1 ), Ġ" drawable ", Ġcontext . packageName ) ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠOk Http Url Loader . Factory ( client ) ĊĠĠĠĠĠĠĠ ĠG lide . get ( context ). registry . replace ( G lide Url :: class . java , ĠInputStream :: class . java , Ġfactory ) ĊĠĠĠĠĠĠĠ Ġval Ġsource Ġ= ĠURL Utils . get Small Avatar Url By Uid ( post . author Id ) ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠRequest Options () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( Context Compat . get Drawable ( context , Ġavatar Resource )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( Context Compat . get Drawable ( context , Ġavatar Resource )) ĊĠĠĠĠĠĠĠ Ġval Ġg lide Url Ġ= ĠG lide Url ( source , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Headers . Builder (). add Header (" refer er ", Ġb bs Info . base _ url ). build () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Network Utils . can Download Image Or File ( context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( glide Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply ( options ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( holder . m Avatar Image view ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( glide Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply ( options ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. only Retrieve From Cache ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( holder . m Avatar Image view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġholder . m Avatar Image view . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠUser Profile Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Const Utils . PASS _ BB S _ ENTITY _ KEY , Ġb bs Info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Const Utils . PASS _ BB S _ USER _ KEY , Ġuser ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" UID ", Ġpost . author Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠActivity Options ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. make Scene Transition Animation ( context Ġas ĠActivity , Ġholder . m Avatar Image view , Ġ" user _ info _ avatar ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= Ġoptions . to Bundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent , Ġbundle ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġholder . m Reply Btn . setOnClickListener Ġ{ Ġreply Listener !!. reply To Some One ( post ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġadvance Ġoption ĊĠĠĠĠĠĠĠ Ġif Ġ( bbs Info . apiVersion Ġ> Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Advance Option ImageView . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbind Ġoption ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Advance Option ImageView . setOnClickListener Ġ{ Ġv : ĠView ? Ġ-> Ġshow PopupMenu ( holder . m Post Advance Option ImageView , Ġpost ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Post Advance Option ImageView . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! post . all Attachments . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattachment Adapter Ġ= ĠAttachment Adapter () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattachment Adapter . set Attachment InfoList ( post . all Attachments ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Recycler view . is Nested Scrolling Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Recycler view . layout Manager Ġ= ĠSt agger ed Grid LayoutManager ( 2 , ĠSt agger ed Grid LayoutManager . VERTICAL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Recycler view . adapter Ġ= Ġattachment Adapter ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattachment Adapter Ġ= ĠAttachment Adapter () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattachment Adapter . set Attachment InfoList ( post . all Attachments ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Recycler view . is Nested Scrolling Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Recycler view . layout Manager Ġ= ĠSt agger ed Grid LayoutManager ( 2 , ĠSt agger ed Grid LayoutManager . VERTICAL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Recycler view . adapter Ġ= Ġattachment Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġregister Listener () ĊĠĠĠĠĠĠĠ Ġif Ġ( view Thread Query Status . author Id Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġno Ġauthor Ġis Ġfiltered ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Filter By Author Id Btn . text Ġ= Ġcontext . getString ( R . string . bbs _ post _ only _ see _ him ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Filter By Author Id Btn . setOnClickListener Ġ{ Ġm Listener !!. set Author Id ( post . author Id ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Filter By Author Id Btn . text Ġ= Ġcontext . getString ( R . string . bbs _ post _ see _ all ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Filter By Author Id Btn . setOnClickListener Ġ{ Ġ// Ġset Ġit Ġback ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Listener !!. set Author Id (- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġwith Ġtid ĊĠĠĠĠĠĠĠ Ġval Ġpid String Ġ= Ġpost . pid . toString () ĊĠĠĠĠĠĠĠ Ġif Ġ( post Comment List . containsKey ( pid String )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . comment Recycler view . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . comment Recycler view . layout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomment Adapter Ġ= ĠComment Adapter () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomments Ġ= Ġpost Comment List . get OrDefault ( pid String , ĠArrayList ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Adapter . comment List Ġ= Ġcomments ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Get Ġcomments Ġsize Ġ" Ġ+ Ġcomments . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . m Recycler view . is Nested Scrolling Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . comment Recycler view . adapter Ġ= Ġcomment Adapter ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . comment Recycler view . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmerge Comment Map ( comment List : ĠMap < String , ĠList < Thread Result . Comment >> ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( comment List Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Comment List . put All ( comment List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment List . forEach ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBi Consumer Ġ{ Ġkey : ĠString , Ġvalue : ĠList < Thread Result . Comment > Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" get Ġcomment Ġkey Ġ$ key Ġvalue Ġ$ value ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpid Ġ= Ġkey . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis . post Comment List . put ( key , value ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfind Ġadapter Ġand Ġchange Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġpost List . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpost Ġ= Ġpost List [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( post . pid Ġ== Ġpid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Changed ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow PopupMenu ( view : ĠView , Ġpost : ĠPost ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( on Advance Option Clicked Listener Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpopup Menu Ġ= ĠPopup Menu ( context , Ġview ) ĊĠĠĠĠĠĠĠ Ġpopup Menu . inflate ( R . menu . post _ option ) ĊĠĠĠĠĠĠĠ Ġ// Ġlisten Ġto Ġthis ĊĠĠĠĠĠĠĠ Ġpopup Menu . setOn MenuItem ClickListener Ġ{ Ġitem : ĠMenuItem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item . getItem Id ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ report _ post Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Advance Option Clicked Listener !!. report Post ( post ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn MenuItem ClickListener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopup Menu . set Force Show Icon ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpopup Menu . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġregister Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Listener Ġ= Ġif Ġ( context Ġis Ġon Filter Changed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġas Ġon Filter Changed ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException ( context . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" Ġmust Ġimplement Ġon Filter Changed ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpost List . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠPost ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġm Thread Publisher : ĠTextView ĊĠĠĠĠĠĠĠ Ġvar Ġm Publish Date : ĠTextView ĊĠĠĠĠĠĠĠ Ġvar Ġm Content : ĠTextView ĊĠĠĠĠĠĠĠ Ġvar Ġm Thread Type : ĠTextView ĊĠĠĠĠĠĠĠ Ġvar Ġm Avatar Image view : ĠImageView ĊĠĠĠĠĠĠĠ Ġvar Ġm Recycler view : ĠRecyclerView ĊĠĠĠĠĠĠĠ Ġvar Ġm Reply Btn : ĠButton ĊĠĠĠĠĠĠĠ Ġvar Ġm Filter By Author Id Btn : ĠButton ĊĠĠĠĠĠĠĠ Ġvar Ġm Post Status Mobile Icon : ĠImageView ĊĠĠĠĠĠĠĠ Ġvar Ġm Post Status Blocked View : ĠView ĊĠĠĠĠĠĠĠ Ġvar Ġm Post Status Warn ed View : ĠView ĊĠĠĠĠĠĠĠ Ġvar Ġm Post Status Edited View : ĠView ĊĠĠĠĠĠĠĠ Ġvar Ġis Author Label : ĠTextView ĊĠĠĠĠĠĠĠ Ġvar Ġm Post Quote Content : ĠTextView ĊĠĠĠĠĠĠĠ Ġvar Ġm Post Advance Option ImageView : ĠImageView ĊĠĠĠĠĠĠĠ Ġvar Ġcomment Recycler view : ĠRecyclerView ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Thread Publisher Ġ= ĠitemView . findViewById ( R . id . bbs _ post _ publisher ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Publish Date Ġ= ĠitemView . findViewById ( R . id . bbs _ post _ publish _ date ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Content Ġ= ĠitemView . findViewById ( R . id . bbs _ thread _ content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Thread Type Ġ= ĠitemView . findViewById ( R . id . bbs _ thread _ type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Avatar Image view Ġ= ĠitemView . findViewById ( R . id . bbs _ post _ avatar _ imageView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Recycler view Ġ= ĠitemView . findViewById ( R . id . bbs _ thread _ attachment _ recyclerview ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Reply Btn Ġ= ĠitemView . findViewById ( R . id . bbs _ thread _ reply _ button ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Filter By Author Id Btn Ġ= ĠitemView . findViewById ( R . id . bbs _ thread _ only _ see _ him _ button ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Post Status Mobile Icon Ġ= ĠitemView . findViewById ( R . id . bbs _ post _ status _ mobile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Post Status Blocked View Ġ= ĠitemView . findViewById ( R . id . bbs _ post _ status _ blocked _ layout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Post Status Warn ed View Ġ= ĠitemView . findViewById ( R . id . bbs _ post _ status _ warn ed _ layout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Post Status Edited View Ġ= ĠitemView . findViewById ( R . id . bbs _ post _ status _ edited _ layout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Author Label Ġ= ĠitemView . findViewById ( R . id . bbs _ post _ is _ author ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Post Quote Content Ġ= ĠitemView . findViewById ( R . id . bbs _ thread _ quote _ content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Post Advance Option ImageView Ġ= ĠitemView . findViewById ( R . id . bbs _ post _ advance _ option ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Recycler view Ġ= ĠitemView . findViewById ( R . id . comment _ recyclerview ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface Ġon Filter Changed Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġset Author Id ( author Id : ĠInt ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Suppress Lint (" Restricted Api ") ĊĠĠĠ Ġclass ĠPost Drawable Wrapper ( var Ġdrawable : ĠDrawable ?) Ġ: ĠDrawable Wrapper ( drawable ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdraw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( drawable Ġ!= Ġnull ) Ġdrawable !!. draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġinternal Ġinner Ġclass ĠPost Image Getter ( var ĠtextView : ĠTextView ) Ġ: ĠImage Getter Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Drawable ( source : ĠString ): ĠDrawable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrawable Ġ= ĠContext Compat . get Drawable ( context , ĠR . drawable . vector _ drawable _ image _ w ider _ placeholder _ stroke ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy Drawable Ġ= ĠPost Drawable Wrapper ( drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Drawable Ġ= ĠDrawable Target ( my Drawable , ĠtextView ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠG lide Ġconfiguration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient Ġ= ĠNetwork Utils . get Preferred Client ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠOk Http Url Loader . Factory ( client ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . get ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. registry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( G lide Url :: class . java , ĠInputStream :: class . java , Ġfactory ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcheck Ġif Ġthere Ġare Ġmultiple Ġdrawable Ġtarget ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url Drawable Mapper . containsKey ( source )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget List Ġ= Ġurl Drawable Mapper [ source ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget List !!. add ( current Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Drawable Mapper [ source ] Ġ= Ġtarget List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget List : ĠMutable List < Drawable Target > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget List . add ( current Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Drawable Mapper [ source ] Ġ= Ġtarget List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġg lide Ġload ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg lide Url Ġ= ĠG lide Url ( source , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Headers . Builder (). add Header (" refer er ", Ġb bs Info . base _ url ). build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Network Utils . can Download Image Or File ( context )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( glide Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . vector _ drawable _ image _ crash ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . ic _ loading _ picture ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrefresh Ġit Ġmanually ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. listener ( object Ġ: ĠRequest Listener < Drawable ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( e : ĠG lide Exception ?, Ġmodel : ĠAny ?, Ġtarget : ĠTarget < Drawable ?> ?, Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= ĠtextView . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . invalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠDrawable ?, Ġmodel : ĠAny ?, Ġtarget : ĠTarget < Drawable ?> ?, ĠdataSource : ĠDataSource ?, Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= ĠtextView . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . invalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( current Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( glide Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . vector _ drawable _ image _ w ider _ placeholder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . ic _ loading _ picture ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. only Retrieve From Cache ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrefresh Ġit Ġmanually ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. listener ( object Ġ: ĠRequest Listener < Drawable ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( e : ĠG lide Exception ?, Ġmodel : ĠAny ?, Ġtarget : ĠTarget < Drawable ?> ?, Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= ĠtextView . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . invalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠDrawable ?, Ġmodel : ĠAny ?, Ġtarget : ĠTarget < Drawable ?> ?, ĠdataSource : ĠDataSource ?, Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= ĠtextView . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . invalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( current Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcurrent Drawable . my Drawable ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġurl Drawable Mapper : ĠMutable Map < String , ĠMutable List < Drawable Target >> Ġ= ĠHashMap () ĊĊĊĠĠĠ Ġinner Ġclass ĠDrawable Target ( public Ġval Ġmy Drawable : ĠPost Drawable Wrapper , Ġval ĠtextView : ĠTextView ) Ġ: ĠCustom Target < Drawable ?> () Ġ{ ĊĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( error Drawable : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Load Failed ( error Drawable ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġerror Drawable Ġ= Ġcontext . get Drawable ( R . drawable . vector _ drawable _ image _ placeholder ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġerror Drawable !!. intrinsic Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġerror Drawable . intrinsic Height ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscreen Width Ġ= ĠtextView . width Ġ- ĠtextView . padding Left Ġ- ĠtextView . padding Right ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġre scale Factor Ġ= Ġscreen Width . toDouble () Ġ/ Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( re scale Factor Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre scale Factor Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Height Ġ= Ġ( height Ġ* Ġre scale Factor ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Drawable . setBounds ( 0 , Ġ 0 , Ġscreen Width , Ġnew Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Drawable . setBounds ( 0 , Ġ 0 , Ġscreen Width , Ġnew Height ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Drawable . drawable Ġ= Ġerror Drawable ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . invalidate () ĊĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġinvalidate Drawable ( drawable : ĠDrawable ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Drawable . drawable Ġ= Ġdrawable ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= ĠtextView . text ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . invalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Drawable To Bitmap ( drawable : ĠDrawable ): ĠBitmap Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ Ġdrawable Ġ éķ¿ å®½ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġdrawable . intrinsic Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhe igh Ġ= Ġdrawable . intrinsic Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable . setBounds ( 0 , Ġ 0 , Ġwidth , Ġhe igh ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ drawable çļĦ é¢ľèī² æł¼å¼ı ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġif Ġ( drawable . opacity Ġ!= ĠPixel Format . OP A QUE ) ĠBitmap . Config . ARGB _ 8 8 8 8 Ġelse ĠBitmap . Config . RGB _ 5 6 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪĽå»º bitmap ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap . create Bitmap ( width , Ġhe igh , Ġconfig ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪĽå»º bitmap çĶ» å¸ĥ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå°Ĩ drawable Ġ åĨħå®¹ çĶ» åĪ° çĶ» å¸ĥ ä¸Ń ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable . draw ( canvas ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbitmap ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Cle ared ( placeholder : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( placeholder Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġplaceholder . intrinsic Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġplaceholder . intrinsic Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Drawable . setBounds ( 0 , Ġ 0 , Ġwidth , Ġheight ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Drawable . drawable Ġ= Ġplaceholder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= ĠtextView . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . invalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Started ( placeholder : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( placeholder Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Drawable ( placeholder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Load Started ( placeholder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠDrawable , Ġtransition : ĠTransition < in ĠDrawable ?> ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġresource . intrinsic Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġresource . intrinsic Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠD RAW ABLE _ COMPRESS _ THRESHOLD Ġ= Ġ 2 5 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠD RAW ABLE _ SI MLE Y _ THRESHOLD Ġ= Ġ 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRes cale Ġto Ġimage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdrawable Ġ= Ġresource ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscreen Width Ġ= ĠtextView . meas ured Width ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG ," The Ġimage Ġis Ġloaded Ġ"+ width +" Ġheight Ġ"+ height ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( screen Width Ġ!= Ġ 0 Ġ&& Ġwidth Ġ* Ġheight Ġ> ĠD RAW ABLE _ SI MLE Y _ THRESHOLD ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġis Ġnot Ġthe Ġsim ley Ġand Ġthe Ġsize Ġshould Ġbe Ġresized Ġto Ġscreen Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġre scale Factor Ġ= Ġ( screen Width . toDouble ()) Ġ/ Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Height Ġ= Ġ( height Ġ* Ġre scale Factor ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( width Ġ* Ġheight Ġ> ĠD RAW ABLE _ COMPRESS _ THRESHOLD ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġis Ġthe Ġbig Ġimage Ġand Ġshould Ġbe Ġcompressed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcompress Ġit Ġfor Ġswift Ġdisplay ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbitmap Ġ= Ġget Drawable To Bitmap ( resource ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġscale Ġit Ġfirst ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap Ġ= ĠBitmap . create Scaled Bitmap ( bitmap , Ġscreen Width , Ġnew Height , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . compress ( Bitmap . Compress Format . PNG , Ġ 1 0 0 , Ġout ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcompressed Bitmap Ġ= ĠBitmap Factory . decode Stream ( ByteArray InputStream ( out . toByteArray ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcompressed Resource Ġ= ĠBitmap Drawable ( context . resources , Ġcompressed Bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable Ġ= Ġcompressed Resource ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Drawable . setBounds ( 0 , Ġ 0 , Ġscreen Width , Ġnew Height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresource . setBounds ( 0 , Ġ 0 , Ġscreen Width , Ġnew Height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Drawable . drawable Ġ= Ġresource ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Drawable . setBounds ( 0 , Ġ 0 , Ġwidth , Ġheight ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresource . setBounds ( 0 , Ġ 0 , Ġwidth , Ġheight ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Drawable . drawable Ġ= Ġresource ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= ĠtextView . text ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . invalidate () ĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġmake Ġimage Ġclick able ĊĠĠĠ Ġinner Ġclass ĠHtml Tag Handler ( val Ġcontext : ĠContext , Ġval ĠtextView : ĠTextView ) Ġ: ĠTag Handler Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle Tag ( opening : ĠBoolean , Ġtag : ĠString , Ġoutput : ĠEdit able , Ġxml Reader : ĠXML Reader ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å¤ĦçĲĨ æłĩçŃ¾ < img > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tag . equals (" img ", Ġignore Case Ġ= Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ éķ¿åº¦ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlen Ġ= Ġoutput . length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ åĽ¾çīĩ åľ°åĿĢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimages Ġ= Ġoutput . get Spans ( len Ġ- Ġ 1 , Ġlen , ĠImage Span :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimg URL Ġ= Ġimages [ 0 ]. source ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ä½¿ åĽ¾çīĩ åı¯ çĤ¹åĩ» å¹¶ çĽĳåĲ¬ çĤ¹åĩ» äºĭä»¶ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( img URL Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . set Span ( Clickable Image ( context , Ġimg URL ), Ġlen Ġ- Ġ 1 , Ġlen , ĠSp anned . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( tag . equals (" del ", Ġignore Case Ġ= Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstart Tag Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġend Tag Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( opening ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Tag Ġ= Ġoutput . length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Tag Ġ= Ġoutput . length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . set Span ( Stri ke through Span (), Ġstart Tag , Ġend Tag , ĠSp anned . SPAN _ EXCL USIVE _ EXCL USIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġinner Ġclass ĠClick able Image ( private Ġval Ġcontext : ĠContext , Ġprivate Ġval Ġurl : ĠString ) Ġ: ĠClick able Span () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar ĠisLoading Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( widget : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è¿Ľè¡Į åĽ¾çīĩ çĤ¹åĩ» ä¹ĭåĲİ çļĦ å¤ĦçĲĨ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isLoading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient Ġ= ĠNetwork Utils . get Preferred Client ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠOk Http Url Loader . Factory ( client ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . get ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. registry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( G lide Url :: class . java , ĠInputStream :: class . java , Ġfactory ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġneed Ġto Ġjudge Ġwhether Ġthe Ġimage Ġis Ġcached Ġor Ġnot ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfind Ġfrom Ġimage Getter ! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url Drawable Mapper . containsKey ( url ) Ġ&& Ġurl Drawable Mapper [ url ] Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrawable Target List : ĠList < Drawable Target >? Ġ= Ġurl Drawable Mapper [ url ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġupdate Ġall Ġtarget ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg lide Url Ġ= ĠG lide Url ( url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Headers . Builder (). add Header (" refer er ", Ġb bs Info . base _ url ). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Drawable Target Ġ= Ġdrawable Target List ! ![ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( glide Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . vector _ drawable _ image _ failed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . vector _ drawable _ loading _ image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. only Retrieve From Cache ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. listener ( object Ġ: ĠRequest Listener < Drawable ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( e : ĠG lide Exception ?, Ġmodel : ĠAny , Ġtarget : ĠTarget < Drawable ? >, Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠHandler ( Looper . get Main Looper ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġupdate Ġall Ġdrawable Ġtarget ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( draw Target Ġin Ġdrawable Target List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg lide Url Ġ= ĠG lide Url ( url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Headers . Builder (). add Header (" refer er ", Ġb bs Info . base _ url ). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( glide Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . vector _ drawable _ image _ failed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . vector _ drawable _ loading _ image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. listener ( object Ġ: ĠRequest Listener < Drawable > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( e : ĠG lide Exception ?, Ġmodel : ĠAny ?, Ġtarget : ĠTarget < Drawable > ?, Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . invalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠDrawable ?, Ġmodel : ĠAny ?, Ġtarget : ĠTarget < Drawable > ?, ĠdataSource : ĠDataSource ?, Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . invalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( draw Target ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠDrawable ?, Ġmodel : ĠAny , Ġtarget : ĠTarget < Drawable ? >, ĠdataSource : ĠDataSource , Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠFull Image Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" URL ", Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( first Drawable Target ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable Target List ?. forEach Ġ{ Ġdrawable Target Ġ-> Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg lide Url Ġ= ĠG lide Url ( url , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Headers . Builder (). add Header (" refer er ", Ġb bs Info . base _ url ). build () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( context ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( glide Url ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . vector _ drawable _ image _ failed ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . vector _ drawable _ loading _ image ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. only Retrieve From Cache ( true ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. listener ( object Ġ: ĠRequest Listener < Drawable > Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Failed ( e : ĠG lide Exception ?, Ġmodel : ĠAny , Ġtarget : ĠTarget < Drawable >, Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġload Ġfrom Ġnetwork Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġfalse Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg lide Url Ġ= ĠG lide Url ( url , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLazy Headers . Builder (). add Header (" refer er ", Ġb bs Info . base _ url ). build () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( context ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( glide Url ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . vector _ drawable _ image _ failed ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . vector _ drawable _ loading _ image ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( target ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠDrawable , Ġmodel : ĠAny , Ġtarget : ĠTarget < Drawable >, ĠdataSource : ĠDataSource , Ġis First Resource : ĠBoolean ): ĠBoolean Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġfalse Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠFull Image Activity :: class . java ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" URL ", Ġurl ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// textView . invalidate Drawable ( resource ); Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). into ( Drawable Target ( my Drawable Ġ= Ġ, textView )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface Ġon Adapter Reply Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġreply To Some One ( post Ġ: ĠPost ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Link Clicked Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Link Clicked ( url : ĠString ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Advance Option Clicked Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġreport Post ( post : ĠPost ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠPost Adapter :: class . java . simple Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠĠĠ Ġthis . view Thread Query Status Ġ= Ġview Thread Query Status ĊĠĠĠĠĠĠĠ Ġset Has Stable Ids ( true ) ĊĠĠĠ Ġ} Ċ }