package Ġcom . android . vocab . fragment . dialog Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Dialog Fragment Ċ import Ġandroid . support . v 7 . widget . Divider Item Decoration Ċ 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 Ġandroid . widget . Button Ċ import Ġcom . android . vocab . R Ċ import Ġcom . android . vocab . holder . Text Show Holder Ċ import Ġcom . android . vocab . provider . bean . Word Ċ import Ġcom . android . vocab . provider . get Words ĊĊ Ċ @ Suppress (" unused ") Ċ class ĠRecyclerView Dialog : ĠDialog Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠLOG _ TAG : ĠString Ġ= ĠRecyclerView Dialog :: class . java . simple Name ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTYPE _ OF _ DATA : ĠString Ġ= Ġ" TYPE _ OF _ DATA " ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġenum Ġclass ĠSupported Types Ġ{ ĊĠĠĠĠĠĠĠ ĠSY NON YM , ĠAN TON YM ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġinterface ĠOn ItemSelected Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġprocess SelectedItem ( type : ĠSupported Types , Ġid : ĠLong ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġvar Ġselected Word : ĠLong Ġ= Ġ 0 L ĊĠĠĠ Ġlateinit Ġvar Ġlist : ĠList < Word > ĊĠĠĠ Ġlateinit Ġvar Ġtype : ĠSupported Types ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġ! is ĠOn ItemSelected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠClass CastException (" Must Ġimplement ĠOn Item Select ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater ?, Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġtype Ġ= ĠSupported Types . valueOf ( arguments . getString ( TYPE _ OF _ DATA )) ĊĊĠĠĠĠĠĠĠ Ġdialog . set Canceled On Touch Outside ( false ) ĊĠĠĠĠĠĠĠ Ġval Ġview : ĠView Ġ= Ġinflater !!. inflate ( R . layout . dialog _ recyclerview , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ( view . findViewById ( R . id . btn Dismiss ) Ġas ĠButton ). setOnClickListener Ġ{ Ġdismiss () Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrv : ĠRecyclerView Ġ= Ġview . findViewById ( R . id . rv List ) Ġas ĠRecyclerView ĊĠĠĠĠĠĠĠ Ġrv . addItem Decoration ( Divider Item Decoration ( context , ĠLinearLayoutManager . VERTICAL )) ĊĠĠĠĠĠĠĠ Ġlist Ġ= Ġget Words ( context ) ĊĠĠĠĠĠĠĠ Ġrv . adapter Ġ= ĠWord ListAdapter () ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġinner Ġclass ĠWord ListAdapter : ĠRecyclerView . Adapter < Text Show Holder >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup ?, Ġview Type : ĠInt ): ĠText Show Holder Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Show Holder ( LayoutInflater . from ( context ). inflate ( R . layout . text _ view _ for _ display , Ġparent , Ġfalse )) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġlist . size ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠText Show Holder ?, Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder ?. textView ?. text Ġ= Ġlist [ position ]. word ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder ?. textView ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( context Ġas ĠOn ItemSelected ). process SelectedItem ( type , Ġlist [ position ]. word Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }