package Ġcom . f zm . chat 3 3 . main . fragment Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . alibaba . android . ar outer . launcher . AR outer Ċ import Ġcom . fu z ame i . common . recycle view base . RecyclerView Divider Ċ import Ġcom . fu z ame i . common . utils . Show Utils Ċ import Ġcom . fu z ame i . component service . app . App Route Ċ import Ġcom . fu z ame i . component service . base . D IL o ad able Fragment Ċ import Ġcom . fu z ame i . component service . config . AppConfig Ċ import Ġcom . fu z ame i . component service . ext . find ViewModel Ċ import Ġcom . f zm . chat 3 3 . R Ċ import Ġcom . f zm . chat 3 3 . core . db . bean . Room Contact Ċ import Ġcom . f zm . chat 3 3 . core . db . bean . Room Info Bean Ċ import Ġcom . f zm . chat 3 3 . core . db . bean . Room User Bean Ċ import Ġcom . f zm . chat 3 3 . core . global . Chat 3 3 Const . LEVEL _ OWNER Ċ import Ġcom . f zm . chat 3 3 . core . global . Chat 3 3 Const . LEVEL _ USER Ċ import Ġcom . f zm . chat 3 3 . main . adapter . Group Member Adapter Ċ import Ġcom . f zm . chat 3 3 . main . mv vm . Group Member ViewModel Ċ import Ġkotlinx . android . synt hetic . main . layout _ book _ friend .* Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* Ġ@ author Ġzh eng jy Ċ Ġ* Ġ@ since Ġ 2 0 1 9 / 1 0 / 2 2 Ċ Ġ* ĠDescription : Ċ Ġ*/ Ċ class ĠGroup Member List Fragment Ġ: ĠD IL o ad able Fragment () Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġprovider : ĠViewModel Provider . Factory ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠGroup Member ViewModel ĊĊĠĠĠ Ġprivate Ġvar Ġadapter : ĠGroup Member Adapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmanager : ĠLinearLayoutManager ĊĠĠĠ Ġprivate Ġval Ġorigin DataList Ġ= ĠArrayList < Room Contact >() ĊĠĠĠ Ġprivate Ġval Ġsearch DataList Ġ= ĠArrayList < Room Contact >() ĊĊĠĠĠ Ġprivate Ġvar Ġroom Info : ĠRoom Info Bean ? Ġ= Ġnull ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĪĹè¡¨ æĵįä½ľ çļĦ ç±»åŀĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġaction : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġé»ĺè®¤ æĺ¾ç¤º ä¸į è¶ħè¿ĩ member Level çļĦ ç¾¤ æĪĲåĳĺ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġuser Level : ĠInt Ġ= ĠLE VEL _ OWNER ĊĠĠĠ Ġprivate Ġvar Ġselect able Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġval Ġroom Id : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġroom Info ?. id Ġ?: Ġ"" ĊĊĠĠĠ Ġprivate Ġval Ġcan Add Friend ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġroom Info ?. can Add Friend Ġ== Ġ 1 ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠçĶ¨æĪ· èĩª èº« çļĦ member Level ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġmember Level ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġroom Info ?. member Level Ġ?: ĠLE VEL _ USER ĊĊĠĠĠ Ġprivate Ġvar Ġon Check Changed Listener : ĠGroup Member Adapter . On Check Changed Listener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġinit Load Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġm Search Keyword : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( room Info : ĠRoom Info Bean , Ġuser Level : ĠInt Ġ= ĠLE VEL _ OWNER , Ġaction : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect able : ĠBoolean Ġ= Ġfalse ): ĠGroup Member List Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠGroup Member List Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Serializable (" room Info ", Ġroom Info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Int (" user Level ", Ġuser Level ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String (" action ", Ġaction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Boolean (" selectable ", Ġselect able ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Id (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . fragment _ group _ member _ list ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Check Result ") ĊĠĠĠ Ġoverride Ġfun Ġinit View ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġroom Info Ġ= Ġarguments ?. get Serializable (" room Info ") Ġas ĠRoom Info Bean ĊĠĠĠĠĠĠĠ Ġuser Level Ġ= Ġarguments ?. getInt (" user Level ") Ġ?: ĠLE VEL _ OWNER ĊĠĠĠĠĠĠĠ Ġaction Ġ= Ġarguments ?. getString (" action ") ĊĠĠĠĠĠĠĠ Ġselect able Ġ= Ġarguments ?. getBoolean (" selectable ") Ġ?: Ġfalse ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= Ġfind ViewModel ( provider ) ĊĠĠĠĠĠĠĠ ĠviewModel . loading . observe ( this , ĠObserver Ġ{ Ġsetup Loading ( it ) Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . room Users . observe ( this , ĠObserver Ġ{ Ġwrapper Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( wrapper Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Load Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Layout . finish Refresh () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Listener ?. on Room Users Update ( wrapper . user List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . get Room Contact sBy Level ( roomId , Ġuser Level ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Load Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Layout . finish Refresh ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . room Contacts . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorigin DataList . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorigin DataList . addAll ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter ?. set Check State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Keyword ( m Search Keyword ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . search Room Contacts . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow SearchResult ( it , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġside Bar . setText View ( dialog ) ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® åı³ ä¾§ Side Bar è§¦ æĳ ¸ çĽĳåĲ¬ ĊĠĠĠĠĠĠĠ Ġside Bar . setOn Touch ing Letter Changed Listener Ġ{ Ġs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è¯¥ åŃĹ æ¯į é¦ĸ æ¬¡ åĩºçİ° çļĦ ä½įç½® ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġadapter ?. getPosition For Section ( s [ 0 ]. toInt (), Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . scrollTo Position With Offset ( position !! , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġre cyclerView . addItem Decoration ( RecyclerView Divider ( activity , ĠLinearLayoutManager . VERTICAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 5 f , ĠContext Compat . getColor ( activity , ĠR . color . chat _ color _ line ))) ĊĠĠĠĠĠĠĠ Ġmanager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= Ġmanager ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠGroup Member Adapter ( activity , Ġroom Id , ĠviewModel , Ġsearch DataList , Ġselect able , Ġaction ) ĊĠĠĠĠĠĠĠ Ġif Ġ( on Check Changed Listener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter ?. setOn Check Changed Listener ( on Check Changed Listener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġ// item çĤ¹åĩ» äºĭä»¶ ĊĠĠĠĠĠĠĠ Ġadapter ?. setOn ItemClickListener Ġ{ Ġ_, Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbean Ġ= Ġsearch DataList [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( listener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. on Item Click ( bean ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bean . id Ġ== ĠApp Config . MY _ ID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShow Utils . show Toast Normal ( activity , ĠgetString ( R . string . chat _ tips _ group _ info 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA Router . getInstance (). build ( App Route . USER _ DETAIL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with String (" userId ", Ġbean . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with String (" roomId ", Ġroom Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Int (" member Level ", Ġmember Level ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Boolean (" can Add Friend ", Ġcan Add Friend ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. navigation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġswipe Layout . set Enable Load More ( false ) ĊĠĠĠĠĠĠĠ Ġswipe Layout . setOn Refresh Listener Ġ{ Ġget Group Member List () Ġ} ĊĠĠĠĠĠĠĠ Ġget Group Member List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Event () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Group Member List () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . get Room Users ( init Load , Ġroom Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Check Result ") ĊĠĠĠ Ġfun Ġsearch Keyword ( keyword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Search Keyword Ġ= Ġkeyword ĊĠĠĠĠĠĠĠ Ġadapter ?. set Search Keyword ( keyword ) ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( keyword )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow SearchResult ( origin DataList , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel . search Room Contact sBy Level ( roomId , Ġuser Level , Ġkeyword ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow SearchResult ( match List : ĠList < Room Contact >, Ġis Search : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch DataList . clear () ĊĠĠĠĠĠĠĠ Ġsearch DataList . addAll ( match List ) ĊĠĠĠĠĠĠĠ Ġadapter ?. notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġif Ġ( is Search Ġ&& Ġsearch DataList . size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Layout . show Other () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( origin DataList . size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Layout . show Empty () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Layout . show Content () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġadapter ?. on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġlistener : ĠOn ItemClickListener ? Ġ= Ġnull ĊĊĠĠĠ Ġinterface ĠOn ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Item Click ( bean : ĠRoom Contact ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On ItemClickListener ( listener : ĠOn ItemClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġupdate Listener : ĠOn Room Users Update Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġinterface ĠOn Room Users Update Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Room Users Update ( room Users : ĠList < Room User Bean >) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Room Users Update Listener ( listener : ĠOn Room Users Update Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Check Changed Listener ( on Check Changed Listener : ĠGroup Member Adapter . On Check Changed Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Check Changed Listener Ġ= Ġon Check Changed Listener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck All ( check All : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( room User Bean Ġin Ġorigin DataList ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Check Changed Listener ?. on Check Changed ( null , Ġcheck All , Ġroom User Bean ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadapter ?. check All ( check All ) ĊĠĠĠ Ġ} Ċ }