expandablelistview学习--在listView里面嵌套GridView

 在网上看到一个例子,讲 android中的expandablelistview,是一种可以扩展的listview,就是那种点击一下可以扩展出子项,再点一下收缩回去的显示list。 因为需要查看一堆文件的目录结构,就使用了expandablelist以便于直观地看到结构形式。
顶层是group,第二层是child。实现ExpandableListView至少需要下面两个类。

        一、ExpandableListView
    一个垂直滚动的显示两个级别(Child,Group)列表项的视图,列表项来自ExpandableListAdapter 。组可以单独展开。
  其所用到的重要方法如下:
      

  1.       expandGroup(int groupPos) :在分组列表视图中展开一组, 
  2. setSelectedGroup(int groupPosition) :设置选择指定的组。 
  3. setSelectedChild(int groupPosition, int childPosition, boolean shouldExpandGroup) :设置选择指定的子项。 
  4. getPackedPositionGroup(long packedPosition) :返回所选择的组 
  5. getPackedPositionForChild(int groupPosition, int childPosition) :返回所选择的子项 
  6. getPackedPositionType(long packedPosition) :返回所选择项的类型(Child,Group) 
  7. isGroupExpanded(int groupPosition) :判断此组是否展开 
            expandGroup(int groupPos) :在分组列表视图中展开一组,
      setSelectedGroup(int groupPosition) :设置选择指定的组。
      setSelectedChild(int groupPosition, int childPosition, boolean shouldExpandGroup) :设置选择指定的子项。
      getPackedPositionGroup(long packedPosition) :返回所选择的组
      getPackedPositionForChild(int groupPosition, int childPosition) :返回所选择的子项
      getPackedPositionType(long packedPosition) :返回所选择项的类型(Child,Group)
      isGroupExpanded(int groupPosition) :判断此组是否展开
      

二、ExpandableListAdapter
    一个接口,将基础数据链接到一个ExpandableListView。此接口的实施将提供访问Child的数据(由组分类),并实例化的Child和Group。
  其里面重要方法

    
  1. getChildId(int groupPosition, int childPosition) 获取与在给定组给予孩子相关的数据。 
  2.     getChildrenCount(int groupPosition) 返回在指定Group的Child数目。 
  3.         getChildView() 获取子视图(就是二级视图) 
  4.         getChildView()获取父视图 
getChildId(int groupPosition, int childPosition) 获取与在给定组给予孩子相关的数据。
    getChildrenCount(int groupPosition) 返回在指定Group的Child数目。
		getChildView() 获取子视图(就是二级视图)
	    getChildView()获取父视图

当我们想做到自己的打开或者关闭的标记时,可以先设置一个selector.xml,然后再用ExpandableListView的实例去调用setGroupIndicator(this.getResources().getDrawable(R.drawable.expand_list_selector));  这样就可以了。

下面就看下例子:

这个代码好像也是在eoe上下载下来的,具体也记不太清楚了,先看下效果图:


先给下代码,人家写的,咱们学习下:


  1. public class ListViewActivity extends Activity 
  2.     ExpandableListView expandableListView; 
  3.  
  4.     ListViewAdapter treeViewAdapter; 
  5.  
  6.     public String[] groups = { "列表1", "列表2", "列表3" }; 
  7.  
  8.     public String[][] child = { { "" }, { "" }, { "", "" } }; 
  9.  
  10.     public void onCreate(Bundle savedInstanceState) 
  11.     { 
  12.         super.onCreate(savedInstanceState); 
  13.         setContentView(R.layout.main); 
  14.  
  15.         treeViewAdapter = new ListViewAdapter(this
  16.                 ListViewAdapter.PaddingLeft >> 1); 
  17.         expandableListView = (ExpandableListView) this 
  18.         .findViewById(R.id.expandableListView); 
  19.  
  20.         List<ListViewAdapter.TreeNode> treeNode = treeViewAdapter.GetTreeNode(); 
  21.         for (int i = 0; i < groups.length; i++) 
  22.         { 
  23.             ListViewAdapter.TreeNode node = new ListViewAdapter.TreeNode(); 
  24.             node.parent = groups[i]; 
  25.             for (int ii = 0; ii < child[i].length; ii++) 
  26.             { 
  27.                 node.childs.add(child[i][ii]); 
  28.             } 
  29.             treeNode.add(node); 
  30.         } 
  31.  
  32.         treeViewAdapter.UpdateTreeNode(treeNode); 
  33.         expandableListView.setAdapter(treeViewAdapter); 
  34.     } 
  35.  
  36.      
public class ListViewActivity extends Activity
{
	ExpandableListView expandableListView;

	ListViewAdapter treeViewAdapter;

	public String[] groups = { "列表1", "列表2", "列表3" };

	public String[][] child = { { "" }, { "" }, { "", "" } };

	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		treeViewAdapter = new ListViewAdapter(this,
				ListViewAdapter.PaddingLeft >> 1);
		expandableListView = (ExpandableListView) this
		.findViewById(R.id.expandableListView);

		List<ListViewAdapter.TreeNode> treeNode = treeViewAdapter.GetTreeNode();
		for (int i = 0; i < groups.length; i++)
		{
			ListViewAdapter.TreeNode node = new ListViewAdapter.TreeNode();
			node.parent = groups[i];
			for (int ii = 0; ii < child[i].length; ii++)
			{
				node.childs.add(child[i][ii]);
			}
			treeNode.add(node);
		}

		treeViewAdapter.UpdateTreeNode(treeNode);
		expandableListView.setAdapter(treeViewAdapter);
	}

	
}

GridView的定义:

  1. class MyGridView extends GridView 
  2.     { 
  3.         public MyGridView(android.content.Context context, 
  4.                 android.util.AttributeSet attrs) 
  5.         { 
  6.             super(context, attrs); 
  7.         } 
  8.  
  9.         /**
  10.          * 设置不滚动
  11.          */ 
  12.         public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) 
  13.         { 
  14.             int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2
  15.             MeasureSpec.AT_MOST); 
  16.             super.onMeasure(widthMeasureSpec, expandSpec); 
  17.         } 
  18.     } 
class MyGridView extends GridView
	{
		public MyGridView(android.content.Context context,
				android.util.AttributeSet attrs)
		{
			super(context, attrs);
		}

		/**
		 * 设置不滚动
		 */
		public void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
		{
			int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
			MeasureSpec.AT_MOST);
			super.onMeasure(widthMeasureSpec, expandSpec);
		}
	}

  1. <span style="font-size: 18px;">adapter的代码:</span> 
adapter的代码:
  1. public class ListViewAdapter extends BaseExpandableListAdapter implements 
  2.         OnItemClickListener 
  3.     public static final int ItemHeight = 48;// 每项的高度 
  4.     public static final int PaddingLeft = 36;// 每项的高度 
  5.     private int myPaddingLeft = 0
  6.     private MyGridView toolbarGrid; 
  7.     private String menu_toolbar_name_array[] = { "存储卡", "我的下载", "图书导入", "系统备份"
  8.             "系统恢复", "清除全部", "在线升级", "快速入门", "关于开卷", "退出系统", "在线升级", "快速入门"
  9.             "关于开卷", "退出系统", "关于开卷", "退出系统", "关于开卷", "退出系统", "关于开卷", "退出系统" }; 
  10.     private int menu_toolbar_image_array[] = { R.drawable.icon_sdcard, 
  11.             R.drawable.icon_sdcard, R.drawable.icon_sdcard, 
  12.             R.drawable.icon_sdcard, R.drawable.icon_sdcard, 
  13.             R.drawable.icon_sdcard, R.drawable.icon_sdcard, 
  14.             R.drawable.icon_sdcard, R.drawable.icon_sdcard, 
  15.             R.drawable.icon_sdcard, R.drawable.icon_sdcard, 
  16.             R.drawable.icon_sdcard, R.drawable.icon_sdcard, 
  17.             R.drawable.icon_sdcard, R.drawable.icon_sdcard, 
  18.             R.drawable.icon_sdcard, R.drawable.icon_sdcard, 
  19.             R.drawable.icon_sdcard, R.drawable.icon_sdcard, 
  20.             R.drawable.icon_sdcard }; 
  21.  
  22.     private List<TreeNode> treeNodes = new ArrayList<TreeNode>(); 
  23.     private Context parentContext; 
  24.     private LayoutInflater layoutInflater; 
  25.     static public class TreeNode 
  26.     { 
  27.         Object parent; 
  28.         List<Object> childs = new ArrayList<Object>(); 
  29.     } 
  30.  
  31.     public ListViewAdapter(Context view, int myPaddingLeft) 
  32.     { 
  33.         parentContext = view; 
  34.         this.myPaddingLeft = myPaddingLeft; 
  35.     } 
  36.  
  37.     public List<TreeNode> GetTreeNode() 
  38.     { 
  39.         return treeNodes; 
  40.     } 
  41.  
  42.     public void UpdateTreeNode(List<TreeNode> nodes) 
  43.     { 
  44.         treeNodes = nodes; 
  45.     } 
  46.  
  47.     public void RemoveAll() 
  48.     { 
  49.         treeNodes.clear(); 
  50.     } 
  51.  
  52.     public Object getChild(int groupPosition, int childPosition) 
  53.     { 
  54.         return treeNodes.get(groupPosition).childs.get(childPosition); 
  55.     } 
  56.  
  57.     public int getChildrenCount(int groupPosition) 
  58.     { 
  59.         return treeNodes.get(groupPosition).childs.size(); 
  60.     } 
  61.  
  62.     static public TextView getTextView(Context context) 
  63.     { 
  64.         AbsListView.LayoutParams lp = new AbsListView.LayoutParams( 
  65.                 ViewGroup.LayoutParams.FILL_PARENT, ItemHeight); 
  66.  
  67.         TextView textView = new TextView(context); 
  68.         textView.setLayoutParams(lp); 
  69.         textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT); 
  70.         return textView; 
  71.     } 
  72.  
  73.     /**
  74.      * 可自定义ExpandableListView
  75.      */ 
  76.     public View getChildView(int groupPosition, int childPosition, 
  77.             boolean isLastChild, View convertView, ViewGroup parent) 
  78.     { 
  79.         if (convertView == null
  80.         { 
  81.             layoutInflater = (LayoutInflater) parentContext 
  82.                     .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
  83.             convertView = layoutInflater.inflate(R.layout.view, null); 
  84.  
  85.             toolbarGrid = (MyGridView) convertView 
  86.                     .findViewById(R.id.GridView_toolbar); 
  87.             toolbarGrid.setNumColumns(4);// 设置每行列数 
  88.             toolbarGrid.setGravity(Gravity.CENTER);// 位置居中 
  89.             toolbarGrid.setHorizontalSpacing(10);// 水平间隔 
  90.             toolbarGrid.setAdapter(getMenuAdapter(menu_toolbar_name_array, 
  91.                     menu_toolbar_image_array));// 设置菜单Adapter 
  92.             toolbarGrid.setOnItemClickListener(this); 
  93.  
  94.         } 
  95.         return convertView; 
  96.     } 
  97.  
  98.     /**
  99.      * 可自定义list
  100.      */ 
  101.     public View getGroupView(int groupPosition, boolean isExpanded, 
  102.             View convertView, ViewGroup parent) 
  103.     { 
  104.         TextView textView = getTextView(this.parentContext); 
  105.         textView.setText(getGroup(groupPosition).toString()); 
  106.         textView.setPadding(myPaddingLeft + PaddingLeft, 0, 0, 0); 
  107.         return textView; 
  108.     } 
  109.  
  110.     public long getChildId(int groupPosition, int childPosition) 
  111.     { 
  112.         return childPosition; 
  113.     } 
  114.  
  115.     public Object getGroup(int groupPosition) 
  116.     { 
  117.         return treeNodes.get(groupPosition).parent; 
  118.     } 
  119.  
  120.     public int getGroupCount() 
  121.     { 
  122.         return treeNodes.size(); 
  123.     } 
  124.  
  125.     public long getGroupId(int groupPosition) 
  126.     { 
  127.         return groupPosition; 
  128.     } 
  129.  
  130.     public boolean isChildSelectable(int groupPosition, int childPosition) 
  131.     { 
  132.         return true
  133.     } 
  134.  
  135.     public boolean hasStableIds() 
  136.     { 
  137.         return true
  138.     } 
  139.  
  140.     /**
  141.      * 构造菜单Adapter
  142.      *
  143.      * @param menuNameArray
  144.      *            名称
  145.      * @param imageResourceArray
  146.      *            图片
  147.      * @return SimpleAdapter
  148.      */ 
  149.     private SimpleAdapter getMenuAdapter(String[] menuNameArray, 
  150.             int[] imageResourceArray) 
  151.     { 
  152.         ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>(); 
  153.         for (int i = 0; i < menuNameArray.length; i++) 
  154.         { 
  155.             HashMap<String, Object> map = new HashMap<String, Object>(); 
  156.             map.put("itemImage", imageResourceArray[i]); 
  157.             map.put("itemText", menuNameArray[i]); 
  158.             data.add(map); 
  159.         } 
  160.         SimpleAdapter simperAdapter = new SimpleAdapter(parentContext, data, 
  161.                 R.layout.item_menu, new String[] { "itemImage", "itemText" }, 
  162.                 new int[] { R.id.item_image, R.id.item_text }); 
  163.         return simperAdapter; 
  164.     } 
  165.  
  166.     @Override 
  167.     public void onItemClick(AdapterView<?> parent, View view, int position, 
  168.             long id) 
  169.     { 
  170.         Toast.makeText(parentContext, "当前选中的是:" + position, Toast.LENGTH_SHORT) 
  171.                 .show(); 
  172.  
  173.     } 
public class ListViewAdapter extends BaseExpandableListAdapter implements
		OnItemClickListener
{
	public static final int ItemHeight = 48;// 每项的高度
	public static final int PaddingLeft = 36;// 每项的高度
	private int myPaddingLeft = 0;
	private MyGridView toolbarGrid;
	private String menu_toolbar_name_array[] = { "存储卡", "我的下载", "图书导入", "系统备份",
			"系统恢复", "清除全部", "在线升级", "快速入门", "关于开卷", "退出系统", "在线升级", "快速入门",
			"关于开卷", "退出系统", "关于开卷", "退出系统", "关于开卷", "退出系统", "关于开卷", "退出系统" };
	private int menu_toolbar_image_array[] = { R.drawable.icon_sdcard,
			R.drawable.icon_sdcard, R.drawable.icon_sdcard,
			R.drawable.icon_sdcard, R.drawable.icon_sdcard,
			R.drawable.icon_sdcard, R.drawable.icon_sdcard,
			R.drawable.icon_sdcard, R.drawable.icon_sdcard,
			R.drawable.icon_sdcard, R.drawable.icon_sdcard,
			R.drawable.icon_sdcard, R.drawable.icon_sdcard,
			R.drawable.icon_sdcard, R.drawable.icon_sdcard,
			R.drawable.icon_sdcard, R.drawable.icon_sdcard,
			R.drawable.icon_sdcard, R.drawable.icon_sdcard,
			R.drawable.icon_sdcard };

	private List<TreeNode> treeNodes = new ArrayList<TreeNode>();
	private Context parentContext;
	private LayoutInflater layoutInflater;
	static public class TreeNode
	{
		Object parent;
		List<Object> childs = new ArrayList<Object>();
	}

	public ListViewAdapter(Context view, int myPaddingLeft)
	{
		parentContext = view;
		this.myPaddingLeft = myPaddingLeft;
	}

	public List<TreeNode> GetTreeNode()
	{
		return treeNodes;
	}

	public void UpdateTreeNode(List<TreeNode> nodes)
	{
		treeNodes = nodes;
	}

	public void RemoveAll()
	{
		treeNodes.clear();
	}

	public Object getChild(int groupPosition, int childPosition)
	{
		return treeNodes.get(groupPosition).childs.get(childPosition);
	}

	public int getChildrenCount(int groupPosition)
	{
		return treeNodes.get(groupPosition).childs.size();
	}

	static public TextView getTextView(Context context)
	{
		AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
				ViewGroup.LayoutParams.FILL_PARENT, ItemHeight);

		TextView textView = new TextView(context);
		textView.setLayoutParams(lp);
		textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
		return textView;
	}

	/**
	 * 可自定义ExpandableListView
	 */
	public View getChildView(int groupPosition, int childPosition,
			boolean isLastChild, View convertView, ViewGroup parent)
	{
		if (convertView == null)
		{
			layoutInflater = (LayoutInflater) parentContext
					.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			convertView = layoutInflater.inflate(R.layout.view, null);

			toolbarGrid = (MyGridView) convertView
					.findViewById(R.id.GridView_toolbar);
			toolbarGrid.setNumColumns(4);// 设置每行列数
			toolbarGrid.setGravity(Gravity.CENTER);// 位置居中
			toolbarGrid.setHorizontalSpacing(10);// 水平间隔
			toolbarGrid.setAdapter(getMenuAdapter(menu_toolbar_name_array,
					menu_toolbar_image_array));// 设置菜单Adapter
			toolbarGrid.setOnItemClickListener(this);

		}
		return convertView;
	}

	/**
	 * 可自定义list
	 */
	public View getGroupView(int groupPosition, boolean isExpanded,
			View convertView, ViewGroup parent)
	{
		TextView textView = getTextView(this.parentContext);
		textView.setText(getGroup(groupPosition).toString());
		textView.setPadding(myPaddingLeft + PaddingLeft, 0, 0, 0);
		return textView;
	}

	public long getChildId(int groupPosition, int childPosition)
	{
		return childPosition;
	}

	public Object getGroup(int groupPosition)
	{
		return treeNodes.get(groupPosition).parent;
	}

	public int getGroupCount()
	{
		return treeNodes.size();
	}

	public long getGroupId(int groupPosition)
	{
		return groupPosition;
	}

	public boolean isChildSelectable(int groupPosition, int childPosition)
	{
		return true;
	}

	public boolean hasStableIds()
	{
		return true;
	}

	/**
	 * 构造菜单Adapter
	 * 
	 * @param menuNameArray
	 *            名称
	 * @param imageResourceArray
	 *            图片
	 * @return SimpleAdapter
	 */
	private SimpleAdapter getMenuAdapter(String[] menuNameArray,
			int[] imageResourceArray)
	{
		ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
		for (int i = 0; i < menuNameArray.length; i++)
		{
			HashMap<String, Object> map = new HashMap<String, Object>();
			map.put("itemImage", imageResourceArray[i]);
			map.put("itemText", menuNameArray[i]);
			data.add(map);
		}
		SimpleAdapter simperAdapter = new SimpleAdapter(parentContext, data,
				R.layout.item_menu, new String[] { "itemImage", "itemText" },
				new int[] { R.id.item_image, R.id.item_text });
		return simperAdapter;
	}

	@Override
	public void onItemClick(AdapterView<?> parent, View view, int position,
			long id)
	{
		Toast.makeText(parentContext, "当前选中的是:" + position, Toast.LENGTH_SHORT)
				.show();

	}
}



里面比较简单的是listView,比较难的就是嵌套GridView吧!
定义文字和图片:

  1. private String menu_toolbar_name_array[] = { "存储卡", "我的下载", "图书导入", "系统备份"
  2.             "系统恢复", "清除全部", "在线升级", "快速入门", "关于开卷", "退出系统", "在线升级", "快速入门"
  3.             "关于开卷", "退出系统", "关于开卷", "退出系统", "关于开卷", "退出系统", "关于开卷", "退出系统" }; 
  4.     private int menu_toolbar_image_array[] = { R.drawable.icon_sdcard, 
  5.             R.drawable.icon_sdcard, R.drawable.icon_sdcard, 
  6.             R.drawable.icon_sdcard, R.drawable.icon_sdcard, 
  7.             R.drawable.icon_sdcard, R.drawable.icon_sdcard, 
  8.             R.drawable.icon_sdcard, R.drawable.icon_sdcard, 
  9.             R.drawable.icon_sdcard, R.drawable.icon_sdcard, 
  10.             R.drawable.icon_sdcard, R.drawable.icon_sdcard, 
  11.             R.drawable.icon_sdcard, R.drawable.icon_sdcard, 
  12.             R.drawable.icon_sdcard, R.drawable.icon_sdcard, 
  13.             R.drawable.icon_sdcard, R.drawable.icon_sdcard, 
  14.             R.drawable.icon_sdcard }; 
private String menu_toolbar_name_array[] = { "存储卡", "我的下载", "图书导入", "系统备份",
			"系统恢复", "清除全部", "在线升级", "快速入门", "关于开卷", "退出系统", "在线升级", "快速入门",
			"关于开卷", "退出系统", "关于开卷", "退出系统", "关于开卷", "退出系统", "关于开卷", "退出系统" };
	private int menu_toolbar_image_array[] = { R.drawable.icon_sdcard,
			R.drawable.icon_sdcard, R.drawable.icon_sdcard,
			R.drawable.icon_sdcard, R.drawable.icon_sdcard,
			R.drawable.icon_sdcard, R.drawable.icon_sdcard,
			R.drawable.icon_sdcard, R.drawable.icon_sdcard,
			R.drawable.icon_sdcard, R.drawable.icon_sdcard,
			R.drawable.icon_sdcard, R.drawable.icon_sdcard,
			R.drawable.icon_sdcard, R.drawable.icon_sdcard,
			R.drawable.icon_sdcard, R.drawable.icon_sdcard,
			R.drawable.icon_sdcard, R.drawable.icon_sdcard,
			R.drawable.icon_sdcard };



里面很重要的是那个node,一定要看理解:

  1. public List<TreeNode> GetTreeNode() 
  2.     { 
  3.         return treeNodes; 
  4.     } 
  5.  
  6.     public void UpdateTreeNode(List<TreeNode> nodes) 
  7.     { 
  8.         treeNodes = nodes; 
  9.     } 
  10.  
  11.     public void RemoveAll() 
  12.     { 
  13.         treeNodes.clear(); 
  14.     } 
  15.  
  16.     public Object getChild(int groupPosition, int childPosition) 
  17.     { 
  18.         return treeNodes.get(groupPosition).childs.get(childPosition); 
  19.     } 
  20.  
  21.     public int getChildrenCount(int groupPosition) 
  22.     { 
  23.         return treeNodes.get(groupPosition).childs.size(); 
  24.     } 
  25.      
  26.     public Object getGroup(int groupPosition) 
  27.     { 
  28.         return treeNodes.get(groupPosition).parent; 
  29.     } 
  30.  
  31.     public int getGroupCount() 
  32.     { 
  33.         return treeNodes.size(); 
  34.     } 
public List<TreeNode> GetTreeNode()
	{
		return treeNodes;
	}

	public void UpdateTreeNode(List<TreeNode> nodes)
	{
		treeNodes = nodes;
	}

	public void RemoveAll()
	{
		treeNodes.clear();
	}

	public Object getChild(int groupPosition, int childPosition)
	{
		return treeNodes.get(groupPosition).childs.get(childPosition);
	}

	public int getChildrenCount(int groupPosition)
	{
		return treeNodes.get(groupPosition).childs.size();
	}
	
	public Object getGroup(int groupPosition)
	{
		return treeNodes.get(groupPosition).parent;
	}

	public int getGroupCount()
	{
		return treeNodes.size();
	}

adapter也挺简单:

  1. private SimpleAdapter getMenuAdapter(String[] menuNameArray, 
  2.             int[] imageResourceArray) 
  3.     { 
  4.         ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>(); 
  5.         for (int i = 0; i < menuNameArray.length; i++) 
  6.         { 
  7.             HashMap<String, Object> map = new HashMap<String, Object>(); 
  8.             map.put("itemImage", imageResourceArray[i]); 
  9.             map.put("itemText", menuNameArray[i]); 
  10.             data.add(map); 
  11.         } 
  12.         SimpleAdapter simperAdapter = new SimpleAdapter(parentContext, data, 
  13.                 R.layout.item_menu, new String[] { "itemImage", "itemText" }, 
  14.                 new int[] { R.id.item_image, R.id.item_text }); 
  15.         return simperAdapter; 
  16.     } 
private SimpleAdapter getMenuAdapter(String[] menuNameArray,
			int[] imageResourceArray)
	{
		ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
		for (int i = 0; i < menuNameArray.length; i++)
		{
			HashMap<String, Object> map = new HashMap<String, Object>();
			map.put("itemImage", imageResourceArray[i]);
			map.put("itemText", menuNameArray[i]);
			data.add(map);
		}
		SimpleAdapter simperAdapter = new SimpleAdapter(parentContext, data,
				R.layout.item_menu, new String[] { "itemImage", "itemText" },
				new int[] { R.id.item_image, R.id.item_text });
		return simperAdapter;
	}

代码下载地址如下:http://download.csdn.net/detail/aomandeshangxiao/3986353
网上还有其他例子,
可以一并学习下:Android自定义ExpandableListView用户界面
ViewAndroid版手风琴(ExpandableListView)
ExpandableListView使用及数据更新
用ExpandableListView实现类似QQ好友列表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值