package Ġcn . cq aut ot est . sun ny be ach . ui . fragment . user . media Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . paging . Combined Load States Ċ import Ġandroidx . paging . Load State Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġby . kir ich 1 4 0 9 . view binding delegate . view Binding Ċ import Ġcn . cq aut ot est . sun ny be ach . R Ċ import Ġcn . cq aut ot est . sun ny be ach . action . Status Action Ċ import Ġcn . cq aut ot est . sun ny be ach . app . App Activity Ċ import Ġcn . cq aut ot est . sun ny be ach . app . App Fragment Ċ import Ġcn . cq aut ot est . sun ny be ach . databinding . User Fish List Fragment Binding Ċ import Ġcn . cq aut ot est . sun ny be ach . other . Intent Key Ċ import Ġcn . cq aut ot est . sun ny be ach . ui . activity . Fish P ond Detail Activity Ċ import Ġcn . cq aut ot est . sun ny be ach . ui . activity . Image Preview Activity Ċ import Ġcn . cq aut ot est . sun ny be ach . ui . adapter . Adapter Delegate Ċ import Ġcn . cq aut ot est . sun ny be ach . ui . adapter . Fish ListAdapter Ċ import Ġcn . cq aut ot est . sun ny be ach . util . Simple Linear Space Item Decoration Ċ import Ġcn . cq aut ot est . sun ny be ach . util . dp Ċ import Ġcn . cq aut ot est . sun ny be ach . util . isEmpty Ċ import Ġcn . cq aut ot est . sun ny be ach . view model . fish p ond . Fish P ond ViewModel Ċ import Ġcn . cq aut ot est . sun ny be ach . widget . Status Layout Ċ import Ġkotlinx . coroutines . flow . collect Latest Ċ Ċ /** Ċ Ġ* Ġauthor Ġ: ĠA ĠL on ely ĠCat Ċ Ġ* Ġgithub Ġ: Ġhttps :// github . com / an ji emo / Sun ny Be ach Ċ Ġ* Ġtime ĠĠ Ġ: Ġ 2 0 2 1 / 1 0 / 3 1 Ċ Ġ* Ġdesc ĠĠ Ġ: ĠçĶ¨æĪ· æĳ ¸ é±¼ åĪĹè¡¨ ĠFragment Ċ Ġ*/ Ċ class ĠUser Fish List Fragment Ġ: ĠApp Fragment < App Activity >(), ĠStatus Action Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm Binding Ġby Ġview Binding < User Fish List Fragment Binding >() ĊĠĠĠ Ġprivate Ġval Ġm Fish ListAdapter Ġ= ĠFish ListAdapter ( Adapter Delegate ()) ĊĠĠĠ Ġprivate Ġval Ġm Fish P ond ViewModel Ġby Ġactivity ViewModels < Fish P ond ViewModel >() ĊĠĠĠ Ġprivate Ġval Ġload State Listener Ġ= Ġ{ Ġcls : ĠCom bined Load States Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ( cls . refresh ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLoad State . Not Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . refresh Layout . finish Refresh () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mF ish ListAdapter . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Empty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Complete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLoad State . Loading Ġ-> Ġshow Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLoad State . Error Ġ-> Ġshow Error Ġ{ Ġm Fish ListAdapter . refresh () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Id (): ĠInt Ġ= ĠR . layout . user _ fish _ list _ fragment ĊĊĠĠĠ Ġoverride Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Binding . rv Fish P ond List . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġm Fish ListAdapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item Decoration ( Simple Linear Space Item Decoration ( 4 . dp )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= Ġarguments ?. getString ( Intent Key . ID , Ġ"") Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġload User Fish List ( userId ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload User Fish List ( userId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview Lifecycle Owner . lifecycle Scope . launch When Created Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Fish P ond ViewModel . getUser Fish List ( userId ). collect Latest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Fish ListAdapter . submit Data ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Event () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Binding . refresh Layout . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Fish ListAdapter . refresh () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠéľĢè¦ģ åľ¨ ĠView Ġ éĶĢ æ¯ ģ çļĦæĹ¶åĢĻ ç§»éĻ¤ Ġlistener ĊĠĠĠĠĠĠĠ Ġm Fish ListAdapter . add Load State Listener ( load State Listener ) ĊĠĠĠĠĠĠĠ Ġm Fish ListAdapter . setOn ItemClickListener Ġ{ Ġitem , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmoment Id Ġ= Ġitem . id ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFish P ond Detail Activity . start ( require Context (), Ġmoment Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Fish ListAdapter . setOn N ine Grid ClickListener Ġ{ Ġsources , Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage Preview Activity . start ( require Context (), Ġsources , Ġindex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetStatus Layout (): ĠStatus Layout Ġ= Ġm Binding . hl Fish P ond Hint ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġm Fish ListAdapter . remove Load State Listener ( load State Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( userId : ĠString ): ĠUser Fish List Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠUser Fish List Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Intent Key . ID , ĠuserId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }