package Ġcom . mat thew . car val hod agen ais . cub ed collector . databind ers Ċ Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . Spinner Ċ import Ġandroidx . databinding . Binding Adapter Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . mat thew . car val hod agen ais . cub ed collector . data . entities . Type Ċ import Ġcom . mat thew . car val hod agen ais . cub ed collector . data . repositories . Condition Repository Ċ import Ġcom . mat thew . car val hod agen ais . cub ed collector . data . repositories . Region Repository Ċ import Ġcom . mat thew . car val hod agen ais . cub ed collector . helpers . generators . Spinner On ItemSelected Listener Generator Ċ import Ġcom . mat thew . car val hod agen ais . cub ed collector . view models . Access ory Add Edit ViewModel Ċ import Ġcom . mat thew . car val hod agen ais . cub ed collector . view models . Console Add Edit ViewModel Ċ import Ġcom . mat thew . car val hod agen ais . cub ed collector . view models . Game Add Edit ViewModel Ċ Ċ class ĠSp inner Data Binder Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ DIS C Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ CONSOLE Ġ= Ġ 6 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ ACCESS ORY Ġ= Ġ 1 1 ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Binding Adapter (" bind : viewModel ", Ġ" bind : lifecycle Owner ", Ġ" bind : default Selection ") ĊĠĠĠĠĠĠĠ Ġfun Ġset Spinner Region Entries ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner : ĠSp inner , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvm : ĠAndroid ViewModel , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl co : ĠLifecycle Owner , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Selection : ĠInt ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠArray Adapter ( spinner . context , Ġandroid . R . layout . simple _ spinner _ item , Ġlist ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepository : ĠRegion Repository ? Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvm Ġis ĠGame Add Edit ViewModel Ġ-> Ġvm . get Region Repository () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvm Ġis ĠConsole Add Edit ViewModel Ġ-> Ġvm . get Region Repository () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . set DropDown View Resource ( android . R . layout . simple _ spinner _ dropdown _ item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository ?. get Region Codes ()?. observe ( l co , ĠObserver Ġ{ Ġitems Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspinner . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspinner . setSelection ( default Selection Ġ- ĠINDEX _ DIS C ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs lg Ġ= ĠSp inner On ItemSelected Listener Generator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspinner . on ItemSelected Listener Ġ= Ġs lg . generate ( vm ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Binding Adapter (" bind : viewModel ", Ġ" bind : lifecycle Owner ", Ġ" bind : default Selection ", Ġ" bind : type ID ") ĊĠĠĠĠĠĠĠ Ġfun Ġset Spinner Condition Entries ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspinner : ĠSp inner , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvm : ĠAndroid ViewModel , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl co : ĠLifecycle Owner , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Selection : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype : ĠInt ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠArray Adapter ( spinner . context , Ġandroid . R . layout . simple _ spinner _ item , Ġlist ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepository : ĠCondition Repository ? Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvm Ġis ĠGame Add Edit ViewModel Ġ-> Ġvm . get Condition Repository () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvm Ġis ĠConsole Add Edit ViewModel Ġ-> Ġvm . get Condition Repository () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvm Ġis ĠAccess ory Add Edit ViewModel Ġ-> Ġvm . get Condition Repository () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( repository Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . get Condition Codes ( type ). observe ( l co , ĠObserver Ġ{ Ġitems Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġwhen ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠType . CD _ ID Ġ-> ĠINDEX _ DIS C ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠType . CONSOLE _ ID Ġ-> ĠINDEX _ CONSOLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠType . ACCESS ORY _ ID Ġ-> ĠINDEX _ ACCESS ORY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠINDEX _ DIS C ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspinner . setSelection ( default Selection Ġ- Ġindex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs lg Ġ= ĠSp inner On ItemSelected Listener Generator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspinner . on ItemSelected Listener Ġ= Ġs lg . generate ( vm ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . set DropDown View Resource ( android . R . layout . simple _ spinner _ dropdown _ item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspinner . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }