package Ġcom . cem alt u ys uz . paging example . ui . fragments Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . content . Content Provider Compat Ċ import Ġandroidx . core . content . Content Provider Compat . require Context Ċ import Ġandroidx . core . widget . add TextChanged Listener Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . navigation . Navigation Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . cem alt u ys uz . paging example . R Ċ import Ġcom . cem alt u ys uz . paging example . databinding . Fragment Search Binding Ċ import Ġcom . cem alt u ys uz . paging example . model . User Item Ċ import Ġcom . cem alt u ys uz . paging example . repo . User Repo Ċ import Ġcom . cem alt u ys uz . paging example . utils . Resource Ċ import Ġcom . cem alt u ys uz . paging example . utils . Status Ċ import Ġcom . cem alt u ys uz . paging example . view model . User ViewModel Ċ import Ġkotlinx . coroutines . Job Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . lang . Exception Ċ import Ġjavax . inject . Inject ĊĊ Ċ class ĠSearch Fragment Ġ: ĠFragment ( R . layout . fragment _ search ) Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : User ViewModel ĊĠĠĠ Ġprivate Ġvar Ġfragment Search Binding Ġ: ĠFragment Search Binding ? Ġ= Ġnull ĊĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġview Binding ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠFragment Search Binding . bind ( view ) ĊĠĠĠĠĠĠĠ Ġfragment Search Binding Ġ= Ġbinding ĊĊĠĠĠĠĠĠĠ Ġbinding . search UserInfo . sear ched User Container . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusername Ġ= Ġbinding . search UserInfo . search List Row UserName . text . toString () ĊĠĠĠĠĠĠĠĠĠĠ Ġif ( username . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠSearch Fragment Directions . action Search Fragment To Follow ers Fragment ( username ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNavigation . find Nav Controller ( it ). navigate ( action ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . search With Username . setText ("") ĊĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠviewModel ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Provider ( require Activity ()). get ( User ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġview Lifecycle Owner ĊĠĠĠĠĠĠĠ Ġ// ĠSearch Listener ĊĊĊĠĠĠĠĠĠĠ Ġvar Ġjob Ġ: Job ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġbinding . search With Username . add TextChanged Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjob ?. cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjob Ġ= Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . search User ( it . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Visibility Change ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Visibility Change ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġobserver () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserver () Ġ{ ĊĊĠĠĠĠĠĠĠ ĠviewModel . get Search Response . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Visibility Change ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it . status ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġit . data !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Search Binding !!. search UserInfo . user Ġ= Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus . ERROR Ġ-> ĠToast . makeText ( require Context (), it . message , Toast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠToast . makeText ( require Context (), " Something Ġwent Ġwrong ", Toast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprogress Visibility Change ( boolean : ĠBoolean ){ ĊĠĠĠĠĠĠĠ Ġif Ġ( boolean ) Ġfragment Search Binding !!. search Load Progress . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġelse Ġfragment Search Binding !!. search Load Progress . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ