package Ġme . pe ace . ui Ċ Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . text . Sp ann able StringBuilder Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Space Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġme . pe ace . crash pe cker . R Ċ import Ġme . pe ace . ui . Trace Adapter . Crash ViewHolder Ċ import Ġme . pe ace . utils . String Style Utils Ċ import Ġjava . util .* Ċ Ċ class ĠTrace Adapter ( private Ġval Ġtraces : ĠArrayList < String > ?, Ġprivate Ġval Ġkeys : ĠArrayList < String > ?) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Crash ViewHolder >() Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġselect Position Ġ= Ġ- 1 ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġposition : ĠInt ): ĠCrash ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . crash _ info _ item , Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn ĠCrash ViewHolder ( v ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( crash ViewHolder : ĠCrash ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtrace Ġ= Ġtraces ! ![ position ]. trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ} ĊĠĠĠĠĠĠĠ Ġcontrol Space State ( crash ViewHolder , Ġtrace . startsWith ( TRACE _ AT )) ĊĠĠĠĠĠĠĠ Ġcontrol Text State ( crash ViewHolder , Ġtrace . startsWith ( TRACE _ AT )) ĊĠĠĠĠĠĠĠ Ġcrash ViewHolder . trace . text Ġ= Ġhandle High Light Text ( crash ViewHolder , Ġtrace , Ġposition ) ĊĠĠĠĠĠĠĠ Ġcontrol Text Selected ( crash ViewHolder , Ġposition ) ĊĠĠĠĠĠĠĠ Ġcontrol Crash Description ( crash ViewHolder , Ġposition ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtraces ?. size Ġ?: Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcontrol Space State ( holder : ĠCrash ViewHolder , Ġis Show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Show ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . space . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . space . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcontrol Text State ( holder : ĠCrash ViewHolder , Ġis Show : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġholder . trace . resources ĊĠĠĠĠĠĠĠ Ġif Ġ( is Show ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . trace . setType face ( null , ĠType face . NORMAL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . trace . setTextColor ( res . getColor ( R . color . trace _ text _ color )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . trace . setType face ( null , ĠType face . BOLD ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . trace . setTextColor ( res . getColor ( R . color . trace _ text _ bold _ color )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle High Light Text ( ĊĠĠĠĠĠĠĠ Ġholder : ĠCrash ViewHolder , ĊĠĠĠĠĠĠĠ Ġtrace : ĠString , ĊĠĠĠĠĠĠĠ Ġposition : ĠInt ĊĠĠĠ Ġ): ĠCharSequence Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( trace . startsWith ( TRACE _ AT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( key Ġin Ġkeys !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( trace . contains ( key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġtrace . indexOf (" (" ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( select Position Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect Position Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġhigh Light Text ( holder , Ġtrace , Ġindex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrace ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhigh Light Text ( holder : ĠCrash ViewHolder , Ġtrace : ĠString , Ġindex : ĠInt ): ĠCharSequence Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġtrace . substring ( 0 , Ġindex ) ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠSp ann able StringBuilder ( start ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString Style Utils . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . trace . context , Ġtrace . substring ( index ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style . High Light TextAppearance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . sub Sequence ( 0 , Ġbuilder . length ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcontrol Crash Description ( holder : ĠCrash ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( 0 Ġ== Ġposition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġholder . trace . resources ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . trace . setTextColor ( res . getColor ( R . color . color _ yellow )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcontrol Text Selected ( holder : ĠCrash ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . item View . isSelected Ġ= Ġselect Position Ġ== Ġposition ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠCrash ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġspace : ĠSpace Ġ= ĠitemView . findViewById < View >( R . id . space ) Ġas ĠSpace ĊĠĠĠĠĠĠĠ Ġval Ġtrace : ĠTextView Ġ= ĠitemView . findViewById < View >( R . id . trace ) Ġas ĠTextView ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠTrace Adapter :: class . java . simple Name ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTRACE _ AT Ġ= Ġ" at Ġ" ĊĠĠĠ Ġ} Ċ }