package Ġcom . ab ast . home bot . pick ers Ċ Ċ import Ġandroid . content . pm . Activity Info Ċ import Ġandroid . content . pm . Resolve Info Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . ab ast . home bot . R Ċ import Ġkotlinx . android . synt hetic . main . activity _ recyclerview .* Ċ import Ġkotlinx . android . synt hetic . main . list _ item . view .* Ċ Ċ abstract Ġclass ĠBase Picker Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġadapter Ġ: ĠActivity Info Adapter ĊĠĠĠ Ġvar Ġheader Item Ġ: ĠActivity Info ? Ġ= Ġnull ĊĊĠĠĠ Ġabstract Ġfun Ġon Item Click ( item : ĠActivity Info ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ recyclerview ) ĊĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠActivity Info Adapter ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Click ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġre cycler _ view . layout Manager Ġ= ĠLinearLayoutManager ( this , RecyclerView . VERTICAL , false ) ĊĠĠĠĠĠĠĠ Ġre cycler _ view . adapter Ġ= Ġadapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Loading ( enabled : ĠBoolean ){ ĊĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= Ġif ( enabled ) ĠView . VISIBLE Ġelse ĠView . IN VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Header ( item Ġ: ĠActivity Info ){ ĊĠĠĠĠĠĠĠ Ġheader Item Ġ= Ġitem ĊĠĠĠĠĠĠĠ Ġheader Title . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġheader . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġheader . label . text Ġ= Ġitem . load Label ( package Manager ) ĊĠĠĠĠĠĠĠ Ġheader . subtitle . text Ġ= ĠgetString ( R . string . default _ activity ) ĊĠĠĠĠĠĠĠ Ġheader . image . setImage Drawable ( item . load Icon ( package Manager )) ĊĠĠĠĠĠĠĠ Ġheader . setOnClickListener { Ġon Item Click ( item ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset List Items ( items Ġ: ĠArray < Activity Info > ){ ĊĠĠĠĠĠĠĠ Ġadapter . items Ġ= Ġitems ĊĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĊĠĠĠĠĠĠĠ Ġif ( items . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty Text . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty Text . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ