package Ġcom . mo sp oly tech . mo sp oly helper . features . ui . account . class m ates . adapter Ċ Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . card view . widget . Card View Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġby . kir ich 1 4 0 9 . view binding delegate . view Binding Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . mo sp oly tech . mo sp oly helper . R Ċ import Ġcom . mo sp oly tech . mo sp oly helper . databinding . Item Class mate Binding Ċ import Ġcom . mo sp oly tech . mo sp oly helper . domain . account . class m ates . model . Class mate Ċ import Ġcom . mo sp oly tech . mo sp oly helper . utils . inflate Ċ Ċ class ĠClass m ates Adapter : RecyclerView . Adapter < Class m ates Adapter . Class m ates ViewHolder >() Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġclass m ates ClickListener : Ġ(( String ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġitems Ġ: ĠList < Class mate > Ġ= Ġempty List () ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdiff Result 2 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDiff Util . calculate Diff ( Class m ates Diff Callback ( field , Ġvalue ), Ġtrue ) ĊĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġdiff Result 2 . dispatch Updates To ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠClass m ates ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠClass m ates ViewHolder ( parent . inflate ( R . layout . item _ class mate )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠClass m ates ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( items [ position ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġitems . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Re cyc led ( holder : ĠClass m ates ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . recycle () ĊĠĠĠĠĠĠĠ Ġsuper . on View Re cyc led ( holder ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠClass m ates ViewHolder ( view Ġ: ĠView ): ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġview Binding Ġby Ġview Binding ( Item Class mate Binding :: bind ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġname : ĠTextView Ġ= Ġview Binding . title Class mate ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġavatar : ĠImageView Ġ= Ġview Binding . avatar Class mate ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġstatus : ĠFrame Layout Ġ= Ġview Binding . status Class mate ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcard : ĠCard View Ġ= Ġview Binding . card ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠClass mate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname . text Ġ= Ġitem . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . status . contains (" ÐŁ Ð¾Ð»ÑĮÐ·Ð¾Ð²Ð°ÑĤ ÐµÐ»ÑĮ ĠÐ½Ðµ ĠÐ½Ð° ĠÑģ Ð°Ð¹ ÑĤÐµ ", Ġtrue ) Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus . setBackground Resource ( R . drawable . round _ offline ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . status . contains (" ÐŁ Ð¾Ð»ÑĮÐ·Ð¾Ð²Ð°ÑĤ ÐµÐ»ÑĮ ĠÐ½Ð° ĠÑģ Ð°Ð¹ ÑĤÐµ ", Ġtrue ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus . setBackground Resource ( R . drawable . round _ online ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus . set BackgroundColor ( item View . context . getColor ( android . R . color . transparent )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard . setOnClickListener Ġ{ Ġclass m ates ClickListener ?. invoke ( item . dialog Key ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( item View . context ). load (" https :// e . mo sp oly tech . ru /${ item . avatar Url } "). circle Crop (). into ( avatar ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġre cycle () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( item View . context ). clear ( avatar ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠClass m ates Diff Callback ( private Ġval Ġold List : ĠList < Class mate >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġnew List : ĠList < Class mate >) Ġ: ĠDiff Util . Callback () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item Position : ĠInt , Ġnew Item Position : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold List [ old Item Position ]. id Ġ== Ġnew List [ new Item Position ]. id ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Old List Size () Ġ= Ġold List . size ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget New List Size () Ġ= Ġnew List . size ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item Position : ĠInt , Ġnew Item Position : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold List [ old Item Position ] Ġ== Ġnew List [ new Item Position ] ĊĊĠĠĠ Ġ} Ċ }