content: package com.grumoon.androidultrapulltorefreshdemo.adapter;
  
  import android.content.Context;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.BaseAdapter;
  import android.widget.TextView;
  
  import com.grumoon.androidultrapulltorefreshdemo.R;
  import com.grumoon.androidultrapulltorefreshdemo.util.DataUtil;
  
  import java.util.HashMap;
  import java.util.List;
  import java.util.Map;
  
  /**
   * Created by grumoon on 15/1/11.
   */
  public class DrawerMenuAdapter extends BaseAdapter {
  
      private int selectedIndex = 0;
  
      private List<HashMap<String, Object>> menuList;
      private LayoutInflater layoutInflater;
  
      public DrawerMenuAdapter(Context context, List<HashMap<String, Object>> menuList) {
          this.layoutInflater = LayoutInflater.from(context);
          this.menuList = menuList;
      }
  
      @Override
      public int getCount() {
          if (menuList == null) {
              return 0;
          }
          return menuList.size();
      }
  
      @Override
      public Object getItem(int position) {
          if (menuList == null || position > menuList.size() - 1) {
              return null;
          }
          return menuList.get(position);
      }
  
      @Override
      public long getItemId(int position) {
          return position;
      }
  
      @Override
      public View getView(int position, View convertView, ViewGroup parent) {
          ViewHolder viewHolder = null;
  
          if (convertView == null) {
              viewHolder = new ViewHolder();
              convertView = layoutInflater.inflate(R.layout.fragment_drawer_menu_item, parent, false);
              viewHolder.tvGroupName = (TextView) convertView.findViewById(R.id.tv_group_name);
              viewHolder.tvItemName = (TextView) convertView.findViewById(R.id.tv_item_name);
              convertView.setTag(viewHolder);
  
          } else {
              viewHolder = (ViewHolder) convertView.getTag();
          }
  
          Map<String, Object> menuItem = menuList.get(position);
          if (menuItem.containsKey(DataUtil.MENU_KEY_GROUP_NAME)) {
              viewHolder.tvGroupName.setText(menuItem.get(DataUtil.MENU_KEY_GROUP_NAME).toString());
              viewHolder.tvGroupName.setVisibility(View.VISIBLE);
          } else {
              viewHolder.tvGroupName.setVisibility(View.GONE);
          }
  
          viewHolder.tvItemName.setText(menuItem.get(DataUtil.MENU_KEY_ITEM_NAME).toString());
  
          if (position == selectedIndex) {
              viewHolder.tvItemName.setBackgroundResource(R.drawable.drawer_menu_item_selected_bg);
          } else {
              viewHolder.tvItemName.setBackgroundResource(R.drawable.drawer_menu_item_bg);
          }
  
          return convertView;
      }
  
  
      static class ViewHolder {
          TextView tvGroupName;
          TextView tvItemName;
      }
  
  
      public void setSelectedIndex(int position) {
          if (menuList != null && position < menuList.size()) {
              selectedIndex = position;
              notifyDataSetChanged();
          }
      }
  }
  