package Ġorg . jav am aster . fragment learning . fragment Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . Search View Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġbutter knife . B utter Kn ife Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġkotlinx . android . synt hetic . main . fragment _ learn .* Ċ import Ġorg . jav am aster . fragment learning . R Ċ import Ġorg . jav am aster . fragment learning . adapter . Learn Adapter Ċ import Ġorg . jav am aster . fragment learning . common . App Ċ import Ġorg . jav am aster . fragment learning . data . entity . Topics Ċ import Ġorg . jav am aster . fragment learning . enums . Topics TypeEnum Ċ import Ġorg . jav am aster . fragment learning . ioc . D agger App Component Ċ import Ġorg . jav am aster . fragment learning . listener . Operation Listener Ċ import Ġorg . jav am aster . fragment learning . service . Learn Service Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* Ġ@ author Ġy ud ong Ċ Ġ* Ġ@ date Ġ 2 0 1 9 / 8 / 1 8 Ċ Ġ*/ Ċ class ĠLearn Fragment Ġ: ĠMain Fragment () Ġ{ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġlearn Service : ĠLearn Service ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtopics Disposable : ĠDis posable ĊĠĠĠ Ġprivate Ġvar Ġrefresh Topics Disposable : ĠDis posable ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ ĠD agger App Component . builder (). global Component ( App . global Component ). build (). inject ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate View ( in flater , Ġcontainer , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ learn , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ ĠB utter Kn ife . bind ( this , Ġview ) ĊĠĠĠĠĠĠĠ Ġval Ġsearch Ġ= Ġview . findViewById < Search View >( R . id . search ) ĊĠĠĠĠĠĠĠ Ġsearch . is Icon ified Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġsearch . is Icon ified ByDefault Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġsearch . setOn Query Text Listener ( object Ġ: ĠSearch View . On Query Text Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , ĠgetString ( R . string . app _ comp leting ), ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( new Text : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġtopics Disposable Ġ= ĠObservable . create < Pair < Mutable List < Topics >, ĠMap < String , ĠInt >>> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= Ġlearn Service . find Topics List ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= Ġlearn Service . find Topics Progress ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . onNext ( Pair ( first , Ġsecond )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . onComplete () ĊĠĠĠĠĠĠĠ Ġ}. subscribe On ( Schedulers . io ()). observe On ( Android Schedulers . main Thread ()). subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Adapter ( it ) ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOperation Listener . fail ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġswipe _ refresh . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Topics Disposable Ġ= ĠObservable . create < Pair < Mutable List < Topics >, ĠMap < String , ĠInt >>> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= Ġlearn Service . find Topics List ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= Ġlearn Service . find Topics Progress ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . onNext ( Pair ( first , Ġsecond )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . onComplete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. subscribe On ( Schedulers . io ()). observe On ( Android Schedulers . main Thread ()). subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe _ refresh . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Adapter ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe _ refresh . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOperation Listener . fail ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġtopics Disposable . dispose () ĊĠĠĠĠĠĠĠ Ġrefresh Topics Disposable ?. dispose () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Suppress Lint (" Inf late Params ") ĊĠĠĠ Ġprivate Ġfun Ġinit Adapter ( pair : ĠPair < Mutable List < Topics >, ĠMap < String , ĠInt >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġpair . first . groupBy Ġ{ Ġit . topics Type Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtopics Placeholder : ĠLinearLayout Ġ= Ġview !!. findViewById ( R . id . topics _ placeholder ) ĊĠĠĠĠĠĠĠ Ġtopics Placeholder . removeAll Views () ĊĠĠĠĠĠĠĠ Ġmap . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew View Ġ= ĠLayoutInflater . from ( activity ). inflate ( R . layout . fragment _ learn _ part , Ġnull , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtopics Name View : ĠTextView Ġ= Ġnew View . findViewById ( R . id . no _ course _ text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtopics Name View . text Ġ= ĠgetString ( Topics TypeEnum . get Enum By Code ( it . key !! ) !!. msg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshow More View : ĠTextView Ġ= Ġnew View . findViewById ( R . id . no _ course _ manage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow More View . text Ġ= ĠgetString ( R . string . view _ more ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow More View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , ĠR . string . app _ comp leting , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtopics RecyclerView : ĠRecyclerView Ġ= Ġnew View . findViewById ( R . id . no _ course _ recycler _ view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtopics RecyclerView . layout Manager Ġ= Ġget Layout Manage () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlearn Adapter Ġ= ĠLearn Adapter ( it . value , Ġpair . second , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtopics RecyclerView . adapter Ġ= Ġlearn Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtopics Placeholder . addView ( new View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Layout Manage (): ĠLinearLayoutManager Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlinear LayoutManager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ Ġlinear LayoutManager . orientation Ġ= ĠLinearLayoutManager . HORIZONTAL ĊĠĠĠĠĠĠĠ Ġreturn Ġlinear LayoutManager ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠLearn Fragment () ĊĠĠĠ Ġ} Ċ } Ċ