According to the ArrayAdapter documentation (http://developer.android.com/reference/android/widget/ArrayAdapter.html):
"However the TextView is referenced, it will be filled with the toString() of each object in the array... Override the toString() method of your objects to determine what text will be displayed for the item in the list."

So in MenuItem, we should override the toString() method and just make it return the name of the item. Then you can just pass an array of MenuItem's and Android should handle the rest.

Also, if the the menu is null or empty, you should probably just pass ArrayAdapter a Collections.emptyList() (see here http://stackoverflow.com/questions/13177060/using-collections-emptylist-and-null-handling)