package Ġcom . example . clean architecture . ui . explore . spec ie . fragment Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . recyclerview . widget . Divider Item Decoration Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . example . clean architecture . MainActivity Ċ import Ġcom . example . clean architecture . R Ċ import Ġcom . example . clean architecture . base . fragment . Data Binding Fragment Ċ import Ġcom . example . clean architecture . databinding . Fragment Species Binding Ċ import Ġcom . example . clean architecture . ui . adapter . Loading State Adapter Ċ import Ġcom . example . clean architecture . ui . explore . spec ie . adapter . Species Adapter Ċ import Ġcom . example . clean architecture . ui . explore . spec ie . view model . Spec ie ViewModel Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . flow . collect Latest Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . with Context Ċ Ċ @ Android EntryPoint Ċ class ĠSpec ies Fragment Ġ: ĊĠĠĠ ĠData Binding Fragment < MainActivity , ĠFragment Species Binding >( R . layout . fragment _ species ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġspec ie ViewModel : ĠSpec ie ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġprivate Ġval Ġspecies Adapter Ġ= ĠSpec ies Adapter () ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġinit ViewModel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġparent Activity ?. show Back Button ( true ) ĊĠĠĠĠĠĠĠ Ġparent Activity ?. support ActionBar ?. title Ġ= ĠgetString ( R . string . species ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . swipe Refresh Layout Species . setOn Refresh Listener Ġ{ Ġspecies Adapter . refresh () Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . re cyclerView Species . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item Decoration ( Divider Item Decoration ( context , ĠDiv ider Item Decoration . VERTICAL )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġspecies Adapter . with Load State Header And Footer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader Ġ= ĠLoading State Adapter ( species Adapter ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfooter Ġ= ĠLoading State Adapter ( species Adapter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( spec ie ViewModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflow Spec ie . collect Latest Ġ{ Ġpaging Data Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . swipe Refresh Layout Species . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspecies Adapter . submit Data ( paging Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }