package it.geosolutions.geocollect.android.core.navigation; import it.geosolutions.geocollect.android.app.R; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; public class NavDrawerAdapter extends ArrayAdapter<NavDrawerItem> { private LayoutInflater inflater; public NavDrawerAdapter(Context context, int textViewResourceId, NavDrawerItem[] objects ) { super(context, textViewResourceId, objects); this.inflater = LayoutInflater.from(context); } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = null ; NavDrawerItem menuItem = this.getItem(position); if ( menuItem.getType() == NavMenuItem.ITEM_TYPE ) { view = getItemView(convertView, parent, menuItem ); } else { view = getSectionView(convertView, parent, menuItem); } return view ; } public View getItemView( View convertView, ViewGroup parentView, NavDrawerItem navDrawerItem ) { NavMenuItem menuItem = (NavMenuItem) navDrawerItem ; NavMenuItemHolder navMenuItemHolder = null; if (convertView == null) { convertView = inflater.inflate( R.layout.navdrawer_item, parentView, false); TextView labelView = (TextView) convertView .findViewById( R.id.navmenuitem_label ); ImageView iconView = (ImageView) convertView .findViewById( R.id.navmenuitem_icon ); navMenuItemHolder = new NavMenuItemHolder(); navMenuItemHolder.labelView = labelView ; navMenuItemHolder.iconView = iconView ; convertView.setTag(navMenuItemHolder); } if ( navMenuItemHolder == null ) { navMenuItemHolder = (NavMenuItemHolder) convertView.getTag(); } navMenuItemHolder.labelView.setText(menuItem.getLabel()); navMenuItemHolder.iconView.setImageResource(menuItem.getIcon()); return convertView ; } public View getSectionView(View convertView, ViewGroup parentView, NavDrawerItem navDrawerItem) { NavMenuSection menuSection = (NavMenuSection) navDrawerItem ; NavMenuSectionHolder navMenuItemHolder = null; if (convertView == null) { convertView = inflater.inflate( R.layout.navdrawer_section, parentView, false); TextView labelView = (TextView) convertView .findViewById( R.id.navmenusection_label ); navMenuItemHolder = new NavMenuSectionHolder(); navMenuItemHolder.labelView = labelView ; convertView.setTag(navMenuItemHolder); } if ( navMenuItemHolder == null ) { navMenuItemHolder = (NavMenuSectionHolder) convertView.getTag(); } navMenuItemHolder.labelView.setText(menuSection.getLabel()); return convertView ; } @Override public int getViewTypeCount() { return 2; } @Override public int getItemViewType(int position) { if(this.getItem(position) != null){ return this.getItem(position).getType(); } return android.widget.Adapter.IGNORE_ITEM_VIEW_TYPE; } @Override public boolean isEnabled(int position) { if(getItem(position) != null){ return getItem(position).isEnabled(); } return false; } private static class NavMenuItemHolder { private TextView labelView; private ImageView iconView; } private class NavMenuSectionHolder { private TextView labelView; } }