package Ġcom . fer o . sk ripsi . ui . pen j ah it . kategori Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Context Theme Wrapper Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . fer o . sk ripsi . R Ċ import Ġcom . fer o . sk ripsi . core . Base Fragment Ċ import Ġcom . fer o . sk ripsi . databinding . Fragment K ategori Pen j ah it Binding Ċ import Ġcom . fer o . sk ripsi . model . Detail K ategori Pen j ah it Ċ import Ġcom . fer o . sk ripsi . model . Pen j ah it Ċ import Ġcom . fer o . sk ripsi . ui . pen j ah it . kategori . adapter . List K ategori Adapter Ċ import Ġcom . fer o . sk ripsi . ui . pen j ah it . kategori . view model . K ategori Pen j ah it ViewModel Ċ import Ġcom . fer o . sk ripsi . ui . pen j ah it . uk uran . Uk uran Detail K ategori Activity Ċ import Ġcom . google . android . material . dialog . Material AlertDialog Builder Ċ import Ġcom . google . gson . Gson Ċ Ċ class ĠK ategori Pen j ah it Fragment Ġ: ĠBase Fragment < Fragment K ategori Pen j ah it Binding >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġk ategori Pen j ah it ViewModel : ĠK ategori Pen j ah it ViewModel Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġobtain ViewModel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdata Pen j ah it Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġbase GetInstance < Pen j ah it >(" EXTRA _ PEN J AH IT _ K ATEG OR I ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġk ategori Adapter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠList K ategori Adapter () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsetup View Binding ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ? ĊĠĠĠ Ġ): ĠFragment K ategori Pen j ah it Binding Ġ{ ĊĠĠĠĠĠĠ Ġreturn ĠFragment K ategori Pen j ah it Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsetup ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ Ġk ategori Pen j ah it ViewModel . apply Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Detail K ategori . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Rv Detail K ategori ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Show Progress . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Event Progress View ( binding . progress Bar , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent ErrorMessage . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast ( it ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata List Detail K ategori . observe ( view Lifecycle Owner , Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Success . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Show Progress . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Event Progress View ( binding . progress Bar , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Delete State . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Item Position . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk ategori Adapter . delete Item ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġk ategori Pen j ah it ViewModel . getList Detail K ategori ( data Pen j ah it ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsetup UI ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġbinding . tv Detail K ategori . text Ġ= Ġ" K ategori ĠPen j ah it Ġ" Ġ+ Ġdata Pen j ah it . nama _ pen j ah it ĊĊĠĠĠĠĠĠĠ Ġbinding . btn Add Category . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtamb ah Data K ategori Fragment Ġ= ĠT ambah Data K ategori Fragment () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Data Ġ= ĠGson (). toJson ( data Pen j ah it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . putString (" EXTRA _ PEN J AH IT ", Ġbundle Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtamb ah Data K ategori Fragment . arguments Ġ= Ġbundle ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Manager Ġ= Ġchild FragmentManager Ġ// car a Ġmem unc ulkan Ġdialog Ġbox ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtamb ah Data K ategori Fragment . show ( fragment Manager , ĠT ambah Data K ategori Fragment :: class . java . simple Name ) Ġ// car a Ġmem unc ulkan Ġdialog Ġbox ( 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Rv Detail K ategori ( data : ĠList < Detail K ategori Pen j ah it > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġk ategori Adapter . set Detail K ategori ( data !! ) ĊĊĠĠĠĠĠĠĠ Ġbinding . rv Detail K ategori . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġk ategori Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġk ategori Adapter . setOn Delete Click Callback ( object Ġ: ĠList K ategori Adapter . On Delete Click Callback { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonDelete Clicked ( data : ĠDetail K ategori Pen j ah it , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpopup Delete ( context , Ġdata , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġk ategori Adapter . setOn Update Click Callback ( object Ġ: ĠList K ategori Adapter . On Update Click Callback { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonUpdate C lik ced ( data : ĠDetail K ategori Pen j ah it ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġedit Data K ategori Fragment Ġ= ĠEdit Data K ategori Fragment () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Data Ġ= ĠGson (). toJson ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . putString (" EXTRA _ DETAIL _ K ATEG OR I ", Ġbundle Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Data K ategori Fragment . arguments Ġ= Ġbundle ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Manager Ġ= Ġchild FragmentManager Ġ// car a Ġmem unc ulkan Ġdialog Ġbox ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Data K ategori Fragment . show ( fragment Manager , ĠEdit Data K ategori Fragment :: class . java . simple Name ) Ġ// car a Ġmem unc ulkan Ġdialog Ġbox ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġk ategori Adapter . setOn Item Click Callback ( object Ġ: ĠList K ategori Adapter . On Item Click Callback { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Clicked ( data : ĠDetail K ategori Pen j ah it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected K ategori ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġselected K ategori ( data : ĠDetail K ategori Pen j ah it ) Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" K amu Ġmem ilih Ġ" Ġ+ Ġdata . nama _ kategori , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ ĠLog . d (" Test ", Ġ" CLICK ĠFROM ĠAD AP TER ") ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( binding . root . context , ĠU k uran Detail K ategori Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Uk uran Detail K ategori Activity . EXTRA _ DATA _ K ATEG OR I , Ġdata ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpopup Delete ( context : ĠContext ?, Ġdata : ĠDetail K ategori Pen j ah it , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbox : ĠContext Ġ= ĠContext Theme Wrapper ( context , ĠR . style . Theme Overlay _ Material Components _ Dialog _ Alert ) ĊĠĠĠĠĠĠĠ Ġval Ġmaterial AlertDialog Builder Ġ= ĠMaterial AlertDialog Builder ( box ) ĊĠĠĠĠĠĠĠ Ġmaterial AlertDialog Builder . setTitle (" H ap us ĠData ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage (" Ap a Ġand a Ġy ak in Ġing in Ġmeng hapus Ġdata Ġini ?") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button (" Tid ak ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" H ap us " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġdialog Interface , Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġp angg il Ġdis ini ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Data K ategori ( data , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete Data K ategori ( data : ĠDetail K ategori Pen j ah it , Ġposition : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġk ategori Pen j ah it ViewModel . delete Data Detail K ategori ( data , Ġposition ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrefresh GetData ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ Ġk ategori Pen j ah it ViewModel . getList Detail K ategori ( data Pen j ah it ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġshow Message ( message : ĠString , Ġcontext : ĠContext ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġmessage , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK ategori Pen j ah it Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }