package com.elmz.drift.drawer; 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; import com.elmz.drift.R; /** * Created by El1t on 11/18/14. */ public class NavDrawerAdapter extends ArrayAdapter<NavDrawerItem> { private LayoutInflater mLayoutInflater; private int mChecked; private static class NavMenuItemHolder { private TextView labelView; private ImageView iconView; } // private class NavMenuSectionHolder { // private TextView labelView; // } public NavDrawerAdapter(Context context, int textViewResourceId) { super(context, textViewResourceId); mLayoutInflater = LayoutInflater.from(context); } @Override public View getView(int position, View convertView, ViewGroup parent) { final NavDrawerItem menuItem = getItem(position); // if (menuItem.getType() == NavMenuItem.ITEM_TYPE) { if (menuItem != null) { return getItemView(convertView, parent, menuItem, position == mChecked); } return getSeparatorView(convertView, parent); } public View getItemView(View convertView, ViewGroup parentView, NavDrawerItem navDrawerItem, boolean isChecked) { final NavMenuItem menuItem = (NavMenuItem) navDrawerItem; final NavMenuItemHolder navMenuItemHolder; if (convertView == null) { convertView = mLayoutInflater.inflate(R.layout.nav_item, parentView, false); // Use view holder navMenuItemHolder = new NavMenuItemHolder(); navMenuItemHolder.labelView = (TextView) convertView.findViewById(R.id.nav_label); navMenuItemHolder.iconView = (ImageView) convertView.findViewById(R.id.nav_icon); convertView.setTag(navMenuItemHolder); } else { navMenuItemHolder = (NavMenuItemHolder) convertView.getTag(); } navMenuItemHolder.labelView.setText(menuItem.getLabel()); if (isChecked) { navMenuItemHolder.iconView.setAlpha(1f); } else { navMenuItemHolder.iconView.setAlpha(.54f); } navMenuItemHolder.iconView.setImageResource(menuItem.getIcon()); navMenuItemHolder.iconView.setVisibility(View.VISIBLE); return convertView; } public View getSeparatorView(View convertView, ViewGroup parentView) { if (convertView == null) { convertView = mLayoutInflater.inflate(R.layout.nav_separator, parentView, false); } return convertView; } // public View getSectionView(View convertView, ViewGroup parentView, // NavDrawerItem navDrawerItem) { // NavMenuSection menuSection = (NavMenuSection) navDrawerItem; // NavMenuSectionHolder navMenuItemHolder = null; // // if (convertView == null) { // convertView = mLayoutInflater.inflate(R.layout.navdrawer_section, parentView, false); // TextView labelView = (TextView) convertView // .findViewById(R.id.nav_label); // // navMenuItemHolder = new NavMenuSectionHolder(); // navMenuItemHolder.labelView = labelView; // convertView.setTag(navMenuItemHolder); // } // // if (navMenuItemHolder == null) { // navMenuItemHolder = (NavMenuSectionHolder) convertView.getTag(); // } // // navMenuItemHolder.labelView.setText(menuSection.getLabel()); // // return convertView; // } public void setItems(NavDrawerItem[] data) { if (data != null) { clear(); addAll(data); notifyDataSetChanged(); } } public void check(int position) { mChecked = position; notifyDataSetChanged(); } @Override public int getViewTypeCount() { return 2; } @Override public int getItemViewType(int position) { return this.getItem(position) == null ? 1 : 0; // this.getItem(position).getType() } @Override public boolean isEnabled(int position) { return getItem(position) != null && getItem(position).isEnabled(); } }