package Ġcom . wp . ex posure Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . ch ad . library . adapter . base . Base Quick Adapter Ċ import Ġcom . ch ad . library . adapter . base . module . Load More Module Ċ import Ġcom . ch ad . library . adapter . base . view holder . Base ViewHolder Ċ import Ġkotlinx . android . synt hetic . main . activity _ grid .* Ċ import Ġkotlinx . android . synt hetic . main . item _ grid . view .* Ċ Ċ /** Ċ Ġ* Ġcreate Ġby ĠWang Ping Ċ Ġ* Ġon Ġ 2 0 2 0 / 1 1 / 6 Ċ Ġ*/ Ċ class ĠGrid Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠGrid Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġre cyclerView Exposure Helper : ĠRecyclerView Exposure Helper < Grid Data > ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ grid ) ĊĠĠĠĠĠĠĠ Ġinit Data () ĊĠĠĠĠĠĠĠ Ġs rl Refresh Layout . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Grid Activity ", Ġ" å¼Ģå§ĭ åĪ·æĸ° åĪĹè¡¨ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs rl Refresh Layout . post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æ¨¡ æĭŁ ä¸¤ ç§Ĵ æīį è¯·æ±Ĥ å®Į æķ°æį® ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Grid Data >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( 2 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Grid Data (" ä¸ĭ æĭī åĪ·æĸ° çĶŁæĪĲ çļĦæķ°æį® $ it ", Ġit )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . set New Instance ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs rl Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Grid Activity ", Ġ" åĪ·æĸ° æķ°æį® æĽ´æĸ° å®Į æ¯ķ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 2 Ġ* Ġ 1 0 0 0 L ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Grid Data >() ĊĠĠĠĠĠĠĠ Ġrepeat ( 2 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Grid Data (" åĪĿå§ĭåĮĸ çĶŁæĪĲ çļĦæķ°æį® $ it ", Ġit )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠGrid Adapter ( list ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv Grid . adapter Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload More Module . setOn Load More Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Grid Activity ", Ġ" å¼Ģå§ĭ åĬłè½½ æĽ´å¤ļ æķ°æį® ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv Grid . post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æ¨¡ æĭŁ ä¸¤ ç§Ĵ æīį è¯·æ±Ĥ å®Į æķ°æį® ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmore Data Ġ= ĠArrayList < Grid Data >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( 2 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmore Data . add ( Grid Data (" åĬłè½½ æĽ´å¤ļ çĶŁæĪĲ çļĦæķ°æį® $ it ", Ġit )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . addData ( more Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Grid Activity ", Ġ" åĬłè½½ æĽ´å¤ļ æķ°æį® æ·»åĬł å®Į æ¯ķ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 2 Ġ* Ġ 1 0 0 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On ItemClickListener Ġ{ Ġadapter , Ġ_, Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Grid Activity ", Ġ"${ adapter . data [ position ]} è¢« åĪłéĻ¤ äºĨ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . remove At ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġre cyclerView Exposure Helper Ġ= ĠRecyclerView Exposure Helper ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView Ġ= Ġrv Grid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexposure Valid Area Percent Ġ= Ġ 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Owner Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexposure State ChangeListener Ġ= Ġobject Ġ: ĠI Exposure State ChangeListener < Grid Data > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Exposure StateChange ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind Exposure Data : ĠGrid Data , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Exposure : ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Grid Activity ", Ġ"${ bind Exposure Data }${ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( in Exposure ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" å¼Ģå§ĭ æĽ Ŀ åħī " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ç»ĵæĿŁ æĽ Ŀ åħī " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠGrid Adapter ( data : ĠMutable List < Grid Data >) Ġ: ĠLoad More Module , ĊĠĠĠ ĠBase Quick Adapter < Grid Data , ĠBase ViewHolder >( R . layout . item _ grid , Ġdata ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġconvert ( holder : ĠBase ViewHolder , Ġitem : ĠGrid Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . item View . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexposure Root . ex posure Bind Data Ġ= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Grid Text . text Ġ= Ġitem . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠGrid Data ( ĊĠĠĠ Ġval Ġcontent : ĠString , ĊĠĠĠ Ġval Ġid : ĠInt Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( java Class Ġ!= Ġother ?. java Class ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġother Ġas ĠGrid Data ĊĠĠĠĠĠĠĠ Ġif Ġ( content Ġ!= Ġother . content ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ!= Ġother . id ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġcontent . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġid ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontent ĊĠĠĠ Ġ} Ċ }