package Ġsu zp 1 9 8 4 . github . io . ex ap ide mo . app . nav Ċ Ċ import Ġandroid . support . design . internal . Navigation Menu Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . text . Layout Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . Sub Menu Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ Ċ import Ġjava . util . ArrayList Ċ Ċ import Ġsu zp 1 9 8 4 . github . io . ex ap ide mo . R Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġmo ses Ġon Ġ 1 0 / 8 / 2 0 1 6 . Ċ Ġ*/ Ċ Ċ class ĠMenu Adapter Ġ: ĠRecyclerView . Adapter < Menu Adapter . Menu ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmenu Items Ġ= ĠArrayList < MenuItem >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠMenu ViewHolder ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġv h : ĠMenu ViewHolder ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMENU _ TITLE _ TYPE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle View Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . menu _ title _ layout , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv h Ġ= ĠMenu Title ViewHolder ( title View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMENU _ ITEM _ TYPE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . menu _ item _ layout , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv h Ġ= ĠMenuItem ViewHolder ( item View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġv h ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠMenu ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġmenu Items [ position ] ĊĊĠĠĠĠĠĠĠ Ġif Ġ( holder Ġis ĠMenu Title ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . title . text Ġ= Ġitem . title ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( holder Ġis ĠMenuItem ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . title . text Ġ= Ġitem . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . icon . setImage Drawable ( item . icon ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmenu Items . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġmenu Items [ position ] ĊĊĠĠĠĠĠĠĠ Ġif Ġ( item . has Sub Menu ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMENU _ TITLE _ TYPE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠMENU _ ITEM _ TYPE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Menu Items ( menu : ĠNavigation Menu ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Items . clear () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. menu . size () Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmenu Item Ġ= Ġmenu . getItem ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Items . add ( menuItem ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( menuItem . has Sub Menu ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsub Menu Ġ= Ġmenu Item . sub Menu ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 .. sub Menu . size () Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsub Item Ġ= Ġsub Menu . getItem ( j ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Items . add ( sub Item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġinner Ġclass ĠMenu ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) ĊĊĠĠĠ Ġinner Ġclass ĠMenu Title ViewHolder ( item View : ĠView ) Ġ: ĠMenu ViewHolder ( item View ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġtitle : ĠTextView ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠitemView . findViewById ( R . id . menu _ title ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠMenuItem ViewHolder ( item View : ĠView ) Ġ: ĠMenu ViewHolder ( item View ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġicon : ĠImageView ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġtitle : ĠTextView ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= ĠitemView . findViewById ( R . id . menu _ icon ) Ġas ĠImageView ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠitemView . findViewById ( R . id . menu _ title ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠMENU _ TITLE _ TYPE Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠMENU _ ITEM _ TYPE Ġ= Ġ 1 0 1 ĊĠĠĠ Ġ} Ċ } Ċ