package Ġcom . chen . base extend . base . fragment Ċ Ċ import Ġandroid . graphics . Rect Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . chen . base extend . R Ċ import Ġcom . chen . base module . base m . Base Bean Ċ import Ġcom . chen . base module . extend . color Ċ import Ġcom . chen . base module . extend . dim en Ċ import Ġcom . chen . base module . extend . dp 2 px Ċ import Ġcom . chen . base module . extend . load Ċ import Ġcom . chen . base module . m list . Base Item ViewHolder Ċ import Ġcom . chen . base module . network . base . Base Response Ċ import Ġkotlinx . android . synt hetic . main . item _ common . view .* Ċ Ċ /** Ċ Ġ* Ġ åįķ ä¸Ģ å¸ĥå±Ģ åĪĹè¡¨ , å·² éħįç½® é»ĺè®¤ item æł·å¼ı Ċ Ġ* Ċ Ġ* Ġ ĠCreated Ġby Ġch en Ġon Ġ 2 0 1 9 / 6 / 6 Ċ Ġ**/ Ċ abstract Ġclass ĠSingle Simple List Fragment Ġ: ĠSingle List Fragment < Single Simple List Fragment . Item Bean >() Ġ{ ĊĊĠĠĠ Ġabstract Ġval Ġwrap Data : ĠMutable List < Item Bean > ĊĊĠĠĠ Ġopen Ġval Ġitem Style Ġ= ĠItem Style () ĊĊĠĠĠ Ġoverride Ġfun Ġload Data ( refresh : ĠBoolean , Ġlast Item : ĠItem Bean ?): ĠLive Data < Base Response < Mutable List < Item Bean >>> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMutable LiveData < Base Response < Mutable List < Item Bean >>> (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Value ( Base Response ( wrap Data , Ġ 2 0 0 , Ġ" æĪĲåĬŁ ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġclass ĠItem Bean ( var Ġtitle : ĠString , Ġvar Ġbrief : ĠString ?, Ġvar Ġimage : ĠString ? Ġ= Ġnull , Ġvar Ġicon : ĠInt ? Ġ= Ġnull , Ġval Ġitem Bean Style : ĠItem Style ? Ġ= Ġnull ) Ġ: ĠBase Bean () ĊĊĠĠĠ Ġinline Ġfun ĠDATA ( item Action : ĠMutable List < Item Bean >. () Ġ-> ĠUnit ): ĠMutable List < Item Bean > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmutable ListOf < Item Bean >(). apply Ġ{ Ġitem Action ( this ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun ĠMutable List < Item Bean >. Item ( title : ĠString , Ġbrief : ĠString ? Ġ= Ġnull , Ġimage : ĠString ? Ġ= Ġnull , Ġicon : ĠInt ? Ġ= Ġnull , Ġitem Style : ĠItem Style ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd ( Item Bean ( title , Ġbrief , Ġimage , Ġicon , Ġitem Style )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġitem Layout Id Ġ= ĠR . layout . item _ common ĊĊĠĠĠ Ġoverride Ġfun Ġbind Item Data ( view Holder : ĠBase Item ViewHolder , Ġdata : ĠItem Bean , Ġposition : ĠInt , Ġreal P : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewHolder . item View . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( item Bean Style Ġ?: Ġitem Style ). run Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Style . let Ġ{ Ġstyle Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ image . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġstyle . visible ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( layout Params Ġas ĠConstraint Layout . LayoutParams ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . width Ġ= Ġstyle . size . first ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . height Ġ= Ġstyle . size . second ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Margins ( style . margin . left , Ġstyle . margin . top , Ġstyle . margin . right , Ġstyle . margin . bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( icon Ġ!= Ġnull Ġ&& Ġicon !! Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( icon !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload ( image , Ġstyle . placeholder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Style . let Ġ{ Ġstyle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ title . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġtitle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Size Ġ= Ġstyle . text Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( color ( style . textColor )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( layout Params Ġas ĠConstraint Layout . LayoutParams ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Margins ( style . margin . left , Ġstyle . margin . top , Ġstyle . margin . right , Ġstyle . margin . bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Lines Ġ= Ġstyle . max Line ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbrief Style . let Ġ{ Ġstyle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ brief . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġbrief ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Size Ġ= Ġstyle . text Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( color ( style . textColor )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġ!( style . auto Hide Ġ&& Ġbrief . isNull OrEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( layout Params Ġas ĠConstraint Layout . LayoutParams ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Margins ( style . margin . left , Ġstyle . margin . top , Ġstyle . margin . right , Ġstyle . margin . bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Lines Ġ= Ġstyle . max Line ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseparator Style . let Ġ{ Ġstyle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ separator . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġstyle . show ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset BackgroundColor ( color ( style . color )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( layout Params Ġas ĠConstraint Layout . LayoutParams ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . height Ġ= Ġdim en ( style . width ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Margins ( style . margin . left , Ġstyle . margin . top , Ġstyle . margin . right , Ġstyle . margin . bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠItem Style ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġimage Style : ĠImage Style Ġ= ĠImage Style (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtitle Style : ĠTextStyle Ġ= ĠTextStyle ( 1 8 f , ĠR . color . gray _ 2 2 , Ġfalse , ĠRect ( dp 2 px ( 1 5 ), Ġdp 2 px ( 0 ), Ġ 0 , Ġ 0 )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbrief Style : ĠTextStyle Ġ= ĠTextStyle ( 1 4 f , ĠR . color . gray _ 2 2 , Ġtrue , ĠRect ( dp 2 px ( 0 ), Ġdp 2 px ( 0 ), Ġ 0 , Ġ 0 )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġseparator Style : ĠSe parator Style Ġ= ĠSe parator Style () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠTextStyle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtext Size : ĠFloat Ġ= Ġ 1 2 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠtextColor : ĠInt Ġ= ĠR . color . gray _ 6 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġauto Hide : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmargin : ĠRect Ġ= ĠRect ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmax Line Ġ: ĠInt Ġ= Ġ 1 ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠImage Style ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsize : ĠPair < Int , ĠInt > Ġ= Ġdp 2 px ( 4 0 ) Ġto Ġdp 2 px ( 4 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmargin : ĠRect Ġ= ĠRect ( dp 2 px ( 1 5 ), Ġdp 2 px ( 1 5 ), Ġ 0 , Ġdp 2 px ( 1 5 )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvisible : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġplaceholder : ĠInt Ġ= ĠR . drawable . ic _ placeholder ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠSe parator Style ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġwidth : ĠInt Ġ= ĠR . dim en . dim en _ 0 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcolor : ĠInt Ġ= ĠR . color . gray _ e 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġshow : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmargin : ĠRect Ġ= ĠRect ( dp 2 px ( 1 5 ), Ġ 0 , Ġdp 2 px ( 1 5 ), Ġ 0 ) ĊĠĠĠ Ġ) Ċ }