package Ġme . ros uh . jian ews . adapter Ċ Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Image Button Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġcom . bump tech . glide . request . RequestOptions Ċ import Ġme . ros uh . android . jian ews . R Ċ import Ġme . ros uh . jian ews . bean . Article Bean Ċ import Ġme . ros uh . jian ews . util . Const Ċ import Ġme . ros uh . jian ews . util . G lide App Ċ import Ġme . ros uh . jian ews . util . My G lide Extension Ċ import Ġme . ros uh . jian ews . view . IList Clicked View Ċ import Ġjava . util . ArrayList Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ġ@ author Ġro su h Ċ Ġ* Ġ@ date Ġ 2 0 1 8 / 1 2 / 2 1 Ċ Ġ*/ Ċ class ĠArticle Adapter ( ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠActivity , ĊĠĠĠ Ġarticle Beans : ĠMutable List < Article Bean >, ĊĠĠĠ Ġval Ġclicked View : ĠIList Clicked View Ċ ) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Article Beans : ĠMutable List < Article Bean >? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm Article Bean : ĠArticle Bean ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm Footer Holder : ĠFooter Holder ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġm Article Beans Ġ= Ġarticle Beans ĊĠĠĠĠĠĠĠ Ġif Ġ( m Article Beans Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Article Beans Ġ= ĠArrayList ( Const . VALUE _ LIST _ DEFAULT _ SIZE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( context ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConst . VALUE _ LIST _ EMPTY _ TYPE Ġ-> ĠEmpty Holder ( layout Inflater , Ġparent ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConst . VALUE _ LIST _ FOO _ TYPE Ġ-> Ġm Footer Holder !! ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConst . VALUE _ LIST _ DEFAULT _ NOT _ IMG _ TYPE Ġ-> ĠArticle Holder ( layout Inflater , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠArticle Holder ( layout Inflater , Ġparent , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( holder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠArticle Holder Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Article Bean Ġ= Ġm Article Beans ! ![ position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( context , Ġm Article Bean !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠEmpty Holder Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbegin Animate ( holder . item View . findViewById ( R . id . tv _ title )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbegin Animate ( holder . item View . findViewById ( R . id . tv _ article _ summary )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFooter Holder Ġ-> Ġbegin Animate ( holder . item View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( m Article Beans !!. size Ġ!= Ġ 0 Ġ&& Ġposition Ġ>= Ġm Article Beans !!. size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġè¿ĶåĽŀ Ġfooter Ġ å¸ĥå±Ģ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConst . VALUE _ LIST _ FOO _ TYPE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( m Article Beans !!. size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġè¿ĶåĽŀ ç©º è§ĨåĽ¾ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConst . VALUE _ LIST _ EMPTY _ TYPE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( m Article Bean ?. images List ?. isNotEmpty () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConst . VALUE _ LIST _ DEFAULT _ TYPE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConst . VALUE _ LIST _ DEFAULT _ NOT _ IMG _ TYPE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( m Article Beans . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConst . VALUE _ LIST _ EMPTY _ SIZE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġm Article Beans !!. size Ġ+ Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Items ( article Beans : ĠList < Article Bean >) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Article Beans !!. addAll ( article Beans ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Footer Holder ( footer Holder : ĠFooter Holder ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Footer Holder Ġ= Ġfooter Holder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĸĩç«ł ç±» ĠH older ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠArticle Holder Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġparent : ĠViewGroup , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġhas Image : ĠBoolean ĊĠĠĠ Ġ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Image ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . list _ item _ article _ normal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . list _ item _ article _ not _ p ics ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġparent , Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ), ĠView . OnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġm Article Bean : ĠArticle Bean ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġm Title TextView : ĠTextView Ġ= ĠitemView . findViewById ( R . id . tv _ title ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġm Publish Time TextView : ĠTextView Ġ= ĠitemView . findViewById ( R . id . tv _ publish _ time ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Thumbnail ImageView : ĠImageView ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtv Views : ĠTextView Ġ= ĠitemView . findViewById ( R . id . tv _ views ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbtn Share Ġ= ĠitemView . findViewById < Image Button >( R . id . btn _ share _ item ) ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ åĬŁèĥ½ ï¼ļ è¢« ĠAdapter Ġ è°ĥçĶ¨ æĿ¥ ç»ĳå®ļ æķ°æį® åĴĮ è§ĨåĽ¾ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ 1 . Ġ çĶ± Ġadapter Ġ ä¼łåħ¥ ä¸Ģä¸ª Ġarticle Bean Ġå¯¹è±¡ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ 2 . Ġ çĶ± æľ¬ æĸ¹æ³ķ ç»ĳå®ļ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġarticle Bean Ġ ä¼łåħ¥ å·² å¡« åħħ æķ°æį®çļĦ Ġarticle Bean Ġå¯¹è±¡ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( context : ĠContext , Ġarticle Bean : ĠArticle Bean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . m Article Bean Ġ= Ġarticle Bean ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Title TextView . text Ġ= Ġm Article Bean !!. title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . has Image ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Thumbnail ImageView Ġ= ĠitemView . findViewById ( R . id . iv _ article _ thumbnail ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Share . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide App . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( m Article Bean !!. thumbnail ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. thumbnail ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide App ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( R . drawable . rec _ loading ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply ( My G lide Extension . getOptions ( RequestOptions (), Ġcontext , Ġ 3 , Ġ 1 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( m Thumbnail ImageView !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Publish Time TextView . text Ġ= Ġm Article Bean !!. date ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Views . text Ġ= Ġm Article Bean !!. views . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( article Bean . type Ġ== ĠConst . Page Type . MEDIA _ REPORT S . toString ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Views . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å®ŀçİ° çĤ¹åĩ» åĲ¯åĬ¨ çī¹å®ļ Ġarticle ĠçļĦ éĺħè¯» é¡µéĿ¢ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Article Bean !!. content . isEmpty () Ġ&& Ġm Article Bean !!. thumbnail . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åªĴ ä½ĵ æĬ¥ éģĵ çĽ´æİ¥ æīĵå¼Ģ æµıè§ĪåĻ¨ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . data Ġ= ĠUri . parse ( m Article Bean !!. url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclicked View . on Item Click ( v , Ġm Article Bean !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ author Ġro su h Ġ 2 0 1 8 - 4 - 2 6 Ġ 2 1 : 0 0 : 3 4 ĊĠĠĠĠ Ġ* Ġ åĬŁèĥ½ ï¼ļ ç©º è§ĨåĽ¾ ĠH older Ġ ç±» ï¼Į åľ¨ çľŁ æŃ£ çļĦæķ°æį® è¿ĺ æ²¡æľī èİ·å¾Ĺ åīį ï¼Į åĬłè½½ æľ¬ Ġholder ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠEmpty Holder Ġinternal Ġconstructor ( in flater : ĠLayoutInflater , Ġparent : ĠViewGroup ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( in flater . inflate ( R . layout . list _ item _ empty , Ġparent , Ġfalse )) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ author Ġro su h Ġ 2 0 1 8 - 4 - 2 8 Ġ 2 1 : 4 3 : 2 1 ĊĠĠĠĠ Ġ* Ġ åĬŁèĥ½ ï¼ļ ä¸Ĭ æĭī åĬłè½½ ĠH older Ġ ç±» ãĢĤ å½ĵ çĶ¨æĪ· ä¸Ĭ æĭī åĪ° åºķ çļĦæĹ¶åĢĻ ï¼Į åĬłè½½ æľ¬ Ġholder ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠFooter Holder ( in flater : ĠLayoutInflater , Ġparent : ĠViewGroup ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( in flater . inflate ( R . layout . list _ item _ footer , Ġparent , Ġfalse )) ĊĊĠĠĠ Ġprivate Ġfun Ġbegin Animate ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ ĠObject Animator . of Float ( view , Ġ" alpha ", Ġ 1 f , Ġ 0 . 5 f , Ġ 1 f ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 1 2 5 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat Mode Ġ= ĠValue Animator . RE START ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat Count Ġ= ĠValue Animator . INF IN ITE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }