package Ġorg . p anta . miss key nest . adapter Ċ Ċ import Ġandroid . os . Handler Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġorg . p anta . miss key nest . R Ċ import Ġorg . p anta . miss key nest . constant . Follow Follower Type Ċ import Ġorg . p anta . miss key nest . entity . User Ċ import Ġorg . p anta . miss key nest . interfaces . IO peration Adapter Ċ import Ġorg . p anta . miss key nest . view data . Follow ViewData Ċ import Ġjava . util .* Ċ Ċ class ĠFollow s Adapter ( list : ĠList < Follow ViewData >, Ġprivate Ġval Ġtype : ĠFollow Follower Type , Ġprivate Ġvar Ġfollow Adapter Listener : Ġorg . p anta . miss key nest . adapter . Follow s Adapter . Follow Adapter Listener ? Ġ= Ġnull ) ĊĠĠĠ Ġ: ĠRecyclerView . Adapter < org . p anta . miss key nest . adapter . Follow ViewHolder >(), ĠI Operation Adapter < Follow ViewData >{ ĊĊĠĠĠ Ġinterface ĠFollow Adapter Listener { ĊĠĠĠĠĠĠĠ Ġfun Ġon User Clicked ( user : ĠUser ) ĊĠĠĠĠĠĠĠ Ġfun Ġon Follow Button Clicked ( item : ĠFollow ViewData ) ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġ// list ãĤĴ ãĤŃ ãĥ£ ãĤ¹ãĥĪ ãģĹãģ¦ æī ± ãģĨ ãģĵãģ¨ ãĤĤ ãģ§ãģįãĤĭ ãģĮ åħĥ ãģĮ LinkedList ãģĭ ãĤĤ ãģĹ ãĤĮ ãģªãģĦ ãģ®ãģ§ ArrayList ãģ¨ãģĹãģ¦ ä½ľæĪĲ ãģĻãĤĭ ĊĠĠĠ Ġprivate Ġval Ġm ArrayList Ġ= ĠArrayList < Follow ViewData >( list ) ĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( m ArrayList ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm ArrayList . size ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( p 0 : ĠViewGroup , Ġp 1 : ĠInt ): Ġorg . p anta . miss key nest . adapter . Follow ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( p 0 . context ). inflate ( R . layout . item _ follow _ follow er , Ġp 0 , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġorg . p anta . miss key nest . adapter . Follow ViewHolder ( in flater , Ġfollow Adapter Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( p 0 : Ġorg . p anta . miss key nest . adapter . Follow ViewHolder , Ġp 1 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfollow Property Ġ= Ġm ArrayList [ p 1 ] ĊĠĠĠĠĠĠĠ Ġp 0 . bind Item ( follow Property , Ġtype ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd All First ( list : ĠList < Follow ViewData >) Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( m ArrayList ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ArrayList . addAll ( 0 , Ġlist ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠHandler (). post { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Range Inserted ( 0 , Ġlist . size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd All Last ( list : ĠList < Follow ViewData >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlast Index Ġ= Ġm ArrayList . size ĊĠĠĠĠĠĠĠ Ġsynchronized ( m ArrayList ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ArrayList . addAll ( list ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠHandler (). post { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// å®Ł é ¨ ĵ æ®µ éļ İ ä¸į åħ· åĲĪ ãģ® åı¯èĥ½ æĢ§ æľī ãĤĬ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Range Inserted ( last Index , Ġlist . size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ( index : ĠInt ): ĠFollow ViewData Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm ArrayList [ index ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ( item : ĠFollow ViewData ): ĠFollow ViewData ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetItem ( item . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ( id : ĠString ): ĠFollow ViewData ? Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( m ArrayList ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm ArrayList . first { Ġit . id Ġ== Ġid Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove Item ( item : ĠFollow ViewData ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( m ArrayList ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġm ArrayList . indexOf ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ArrayList . remove ( item ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠHandler (). post { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Removed ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Item ( item : ĠFollow ViewData ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( m ArrayList ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( n Ġin Ġ 0 . until ( m ArrayList . size )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( m ArrayList [ n ]. id Ġ== Ġitem . id ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ArrayList [ n ] Ġ= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Changed ( n ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }