package Ġcom . rx . application . ui . fragment Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . widget . AppCompat ImageView Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . recyclerview . widget . Default Item Animator Ċ import Ġandroidx . recyclerview . widget . Divider Item Decoration Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . rx . application . MainActivity Ċ import Ġcom . rx . application . view model . Main ViewModel Ċ import Ġcom . rx . application . R Ċ import Ġcom . rx . application . databinding . Fragment House Binding Ċ import Ġcom . rx . application . model . House Ċ Ċ class ĠHouse Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding Ġ: ĠFragment House Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠMain ViewModel ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠHouse Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . inflate ( in flater , ĠR . layout . fragment _ house , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Provider ( activity Ġas ĠMainActivity ). get ( Main ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ ĠviewModel . current Title . post Value ( getString ( R . string . title _ house )) ĊĠĠĠĠĠĠĠ ĠviewModel . house Data . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . house Data . value ?. let Ġ{ Ġ( binding . recycler . adapter Ġas ĠAdapter ). update Data ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" TAG ", ĠviewModel . house Data . value . toString ()) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġbinding . recycler . layout Manager Ġ= ĠLinearLayoutManager ( activity , ĠRecyclerView . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbinding . recycler . adapter Ġ= Ġactivity ?. let Ġ{ ĠAdapter ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . recycler . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġbinding . recycler . setItem Animator ( Default Item Animator ()) ĊĠĠĠĠĠĠĠ Ġbinding . recycler . addItem Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDiv ider Item Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . recycler . context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRecyclerView . VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠAdapter ( private Ġval Ġactivity : ĠFragment Activity ) Ġ: ĠRecyclerView . Adapter < Adapter . ViewHolder >() Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġdatas Ġ: ĠMutable List < House > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġfun Ġupdate Data ( datas : ĠMutable List < House > ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . datas Ġ= Ġdatas ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ). inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ house , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġdatas . get ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( activity ). load ( data . pic ). into ( holder . img ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . txt _ name . text Ġ= Ġdata . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . txt _ desc . text Ġ= Ġdata . info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . txt _ time . text Ġ= Ġdata . memo ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . btn _ forward . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ?) ?. open House Detail Page ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdatas . size ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġclass ĠViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimg Ġ: ĠAppCompat ImageView Ġ= ĠitemView . findViewById ( R . id . img ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtxt _ name Ġ: ĠTextView Ġ= ĠitemView . findViewById ( R . id . txt _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtxt _ desc Ġ: ĠTextView Ġ= ĠitemView . findViewById ( R . id . txt _ desc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtxt _ time Ġ: ĠTextView Ġ= ĠitemView . findViewById ( R . id . txt _ time ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbtn _ forward Ġ: ĠAppCompat ImageView Ġ= ĠitemView . findViewById ( R . id . btn _ forward ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtxt _ name . isSelected Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }