package Ġcom . useful ness . sl idr . example Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġcom . squareup . mos hi . Types Ċ import Ġcom . useful ness . sl idr . example . databinding . Activity Main Binding Ċ import Ġcom . useful ness . sl idr . example . model . Android Os Ċ import Ġok io . buffer Ċ import Ġok io . source Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠActivity Main Binding . inflate ( LayoutInflater . from ( this )) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠOS Version Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Intent Ġ= ĠIntent ( this @ MainActivity , ĠViewer Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Viewer Activity . EXTRA _ OS , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( start Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġadapter . submit List ( data ) ĊĠĠĠĠĠĠĠ Ġbinding . recycler . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġbinding . recycler . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdata Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm oshi Ġ= ĠM oshi . Builder (). build () ĊĠĠĠĠĠĠĠ Ġval Ġlist My Data Ġ= ĠTypes . new Parameterized Type ( List :: class . java , ĠAndroid Os :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġjson Adapter Ġ= Ġm oshi . adapter < List < Android Os >>( list My Data ) ĊĊĠĠĠĠĠĠĠ Ġresources . open Raw Resource ( R . raw . android _ versions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. use Ġ{ Ġjson Adapter . fromJson ( it . source (). buffer ()) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ