package Ġcom . studio 1 r . simple block explorer Ċ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġkotlinx . android . synt hetic . main . block _ list _ fragment .* Ċ import Ġkotlinx . android . synt hetic . main . item _ block . view .* ĊĊ Ċ class ĠBlock List Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠBlock List ViewModel ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġblock Adapter : ĠBlock Adapter ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . block _ list _ fragment , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġvar Ġa Ġ= Ġactivity Ġas ĠMainActivity ĊĠĠĠĠĠĠĠ Ġvar Ġlm Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ Ġblock Adapter Ġ= ĠBlock Adapter () ĊĠĠĠĠĠĠĠ Ġre cyclerView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= Ġlm ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġblock Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġapp Ġ= Ġa . application Ġas ĠResource Provider ĊĠĠĠĠĠĠĠ Ġvar Ġresource Locator Ġ= Ġapp . resource Locator ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this , Ġresource Locator . factory ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( Block List ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ ĠviewModel . get Blocks LiveData (). observe ( this , ĠObserver Ġ{ Ġdata Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock Adapter . update Data ( data !! ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġrefresh . setOnClickListener Ġ{ ĠviewModel . refresh Blocks () Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ class ĠBlock Adapter Ġ: ĠRecyclerView . Adapter < Block Adapter . ViewHolder >() Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġdata Ġ= ĠlistOf < Block Entity >() ĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . item _ block , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġdata [ position ] ĊĠĠĠĠĠĠĠ Ġholder . bind ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Data ( block Entities : ĠList < Block Entity >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . data Ġ= Ġblock Entities ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( data : ĠBlock Entity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . time Stamp . text Ġ= ĠString . format (" timestamp : Ġ% s ", Ġdata . timestamp ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . block Id . text Ġ= ĠString . format (" block Ġnum : Ġ% d ", Ġdata . block _ num ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . id Hash . text Ġ= ĠString . format (" block Ġid : Ġ% s ", Ġdata . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . action Count . text Ġ= ĠString . format (" transactions : Ġ% d ", Ġdata . transactions . size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// populate Ġdetails ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . detail 1 . text Ġ= Ġdata . producer _ signature ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . detail 2 . text Ġ= Ġdata . schedule _ version ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . detail 3 . text Ġ= Ġdata . previous ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item View . details Container . visibility Ġ== ĠView . VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . details Container . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . details Container . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ