package Ġme . li uq ing wen . android . project better practice fragment Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 7 . widget . Divider Item Decoration Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġkotlinx . android . synt hetic . main . layout _ fragment _ main .* Ċ import Ġorg . jetbrains . ank o . do Async Ċ import Ġorg . jetbrains . ank o . ui Thread Ċ Ċ class ĠMain Fragment Ġ: ĠFragment () Ċ { ĊĠĠĠ Ġcompanion Ġobject ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠMain Fragment Ġ= ĠMain Fragment () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġdata List Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ Ġarray ListOf < Contact >() Ġ} ĊĠĠĠ Ġprivate Ġval Ġadapter Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĠMy Adapter ( this . activity Context !! , Ġthis . data List , Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġthis . re cyclerView . getChild Adapter Position ( it ) ĊĠĠĠĠĠĠĠ Ġthis . activity Context ?. let Ġ{ Ġthis . startActivity ( Detail Activity . get Detail Intent ( it , Ġthis . data List , Ġindex )) Ġ} ĊĠĠĠ Ġ}) Ġ} ĊĠĠĠ Ġprivate Ġval Ġlayout Animation Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĠAnimation Utils . load Layout Animation ( this . activity Context , ĠR . anim . anim _ item _ layout ) Ġ} ĊĠĠĠ Ġprivate Ġvar Ġactivity Context Ġ: ĠContext ? Ġ= Ġnull ĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . layout _ fragment _ main , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĊĠĠĠĠĠĠĠ Ġthis . label No Data . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġthis . layout Sw ip Refresh . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . load Data () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġthis . re cyclerView . adapter Ġ= Ġthis . adapter ĊĠĠĠĠĠĠĠ Ġthis . re cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( this . activity Context , ĠLinearLayoutManager . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġthis . re cyclerView . addItem Decoration ( Divider Item Decoration ( this . activity Context , ĠDiv ider Item Decoration . VERTICAL )) ĊĠĠĠĠĠĠĠ Ġthis @ Main Fragment . re cyclerView . layout Animation Ġ= Ġthis . layout Animation ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġthis . layout Sw ip Refresh . is Refresh ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġthis . load Data () ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġprivate Ġfun Ġload Data () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . label No Data . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġdo Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġthis @ Main Fragment . activity Context ?. let Ġ{ ĠDatabase Helper . getInstance ( it ). getAll Contacts () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Main Fragment . data List . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata ?. let Ġ{ Ġthis @ Main Fragment . data List . addAll ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Main Fragment . layout Sw ip Refresh . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this @ Main Fragment . data List . size Ġ<= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Main Fragment . label No Data . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Main Fragment . re cyclerView . schedule Layout Animation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Main Fragment . adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ?) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . activity Context Ġ= Ġcontext !! ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detach () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . activity Context Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġsuper . on Detach () ĊĠĠĠ Ġ} Ċ Ċ } Ċ