package com.kemallette.MultiChoiceExpandableList; import java.util.HashMap; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseExpandableListAdapter; import android.widget.TextView; import com.kemallette.MultiChoiceExpandableList.Example.SeedDataUtil; import com.kemallette.MultiChoiceExpandableList.Example.WorldCity; public class ExampleAdapter extends BaseExpandableListAdapter{ private static class ExampleHolder{ TextView mTitle; } private ExampleHolder mHolder; private LayoutInflater inflater; private HashMap<Character, List<WorldCity>> mData; private Context ctx; public ExampleAdapter(Context ctx){ this.ctx = ctx; mData = SeedDataUtil.getAphabetGroupedCities( ctx, 15); } @Override public int getGroupCount(){ return mData.keySet() .size(); } @Override public int getChildrenCount(int groupPosition){ return mData.get((char) ('a' + groupPosition)) .size(); } @Override public Object getGroup(int groupPosition){ return (char) ('a' + groupPosition); } @Override public Object getChild(int groupPosition, int childPosition){ return mData.get((char) ('a' + groupPosition)) .get(childPosition); } @Override public long getGroupId(int groupPosition){ return (Character) getGroup(groupPosition); } @Override public long getChildId(int groupPosition, int childPosition){ return mData.get((char) ('a' + groupPosition)) .get(childPosition) .getId(); } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent){ if (convertView == null){ if (inflater == null) inflater = LayoutInflater.from(ctx); convertView = inflater.inflate( R.layout.list_item, null); } if (convertView.getTag() == null){ mHolder = new ExampleHolder(); mHolder.mTitle = (TextView) convertView.findViewById(R.id.title); convertView.setTag(mHolder); }else mHolder = (ExampleHolder) convertView.getTag(); mHolder.mTitle.setText(getGroup(groupPosition).toString() .toUpperCase()); return convertView; } @Override public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent){ if (convertView == null){ if (inflater == null) inflater = LayoutInflater.from(ctx); convertView = inflater.inflate( R.layout.child_list_item, null); } if (convertView.getTag() == null){ mHolder = new ExampleHolder(); mHolder.mTitle = (TextView) convertView.findViewById(R.id.title); convertView.setTag(mHolder); }else mHolder = (ExampleHolder) convertView.getTag(); mHolder.mTitle.setText(getChild( groupPosition, childPosition).toString()); return convertView; } @Override public boolean hasStableIds(){ return true; } @Override public boolean isChildSelectable(int groupPosition, int childPosition){ return true; } }