Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7687997
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: Android平台

2015-11-24 10:26:08

ListView组件可以为用户提供列表的显示功能,但是如果要想对这些列表数据进行分组的管理,则就需要使用android.widget.ExpandableListView组件完成

点击(此处)折叠或打开

  1. package org.lxh.demo;
  2. import android.content.Context;
  3. import android.view.Gravity;
  4. import android.view.View;
  5. import android.view.ViewGroup;
  6. import android.widget.AbsListView;
  7. import android.widget.BaseExpandableListAdapter;
  8. import android.widget.TextView;
  9. // 继承BaseExpandableListAdapter并覆写类中的抽象方法
  10. public class MyExpandableListAdapter extends BaseExpandableListAdapter {
  11.     public String[] groups = { "我的好友", "家人", "同事", "黑名单" };// 组名称
  12.     public String[][] children = {
  13.             { "李兴华", "董鸣楠", "王月清", "周艳军" },
  14.             { "父亲", "母亲" }, { "刘宏伟", "李祺", "刘媛" },
  15.             { "票贩子", "造假商" } };        // 定义组项
  16.     private Context context = null;        // 保存上下文对象
  17.     public MyExpandableListAdapter(Context context) {    // 构造方法接收
  18.         this.context = context;
  19.     }
  20.     @Override
  21.     public Object getChild(int groupPosition, int childPosition) {    // 取得指定的子项
  22.         return this.children[groupPosition][childPosition];
  23.     }
  24.     @Override
  25.     public long getChildId(int groupPosition, int childPosition) {    // 取得子项ID
  26.         return childPosition;
  27.     }
  28.     public TextView buildTextView() {    // 自定义方法,建立文本
  29.         AbsListView.LayoutParams param = new AbsListView.LayoutParams(
  30.                 ViewGroup.LayoutParams.FILL_PARENT, 35);// 指定布局参数
  31.         TextView textView = new TextView(this.context);// 创建TextView
  32.         textView.setLayoutParams(param);    // 设置布局参数
  33.         textView.setTextSize(15.0f);        // 设置文字大小
  34.         textView.setGravity(Gravity.LEFT);        // 左对齐
  35.         textView.setPadding(40, 8, 3, 3);    // 间距
  36.         return textView;// 返回组件
  37.     }
  38.     @Override
  39.     public View getChildView(int groupPosition, int childPosition,
  40.             boolean isLastChild, View convertView, ViewGroup parent) {// 返回子项组件
  41.         TextView textView = buildTextView();    // 创建TextView
  42.         textView.setText(getChild(groupPosition,
  43.                 childPosition).toString());        // 设置显示文字
  44.         return textView;
  45.     }
  46.     @Override
  47.     public int getChildrenCount(int groupPosition) {    // 取得子项个数
  48.         return this.children[groupPosition].length;    // 取得子项个数
  49.     }
  50.     @Override
  51.     public Object getGroup(int groupPosition) {// 取得组对象
  52.         return this.groups[groupPosition];
  53.     }
  54.     @Override
  55.     public int getGroupCount() {    // 取得组个数
  56.         return this.groups.length;
  57.     }
  58.     @Override
  59.     public long getGroupId(int groupPosition) {// 取得组ID
  60.         return groupPosition;
  61.     }
  62.     @Override
  63.     public View getGroupView(int groupPosition, boolean isExpanded,
  64.             View convertView, ViewGroup parent) {    // 取得组显示组件
  65.         TextView textView = buildTextView();    // 建立组件
  66.         textView.setText(this.getGroup(groupPosition).toString());    // 设置文字
  67.         return textView;
  68.     }
  69.     @Override
  70.     public boolean hasStableIds() {
  71.         return true;
  72.     }
  73.     @Override
  74.     public boolean isChildSelectable(int groupPosition, int childPosition) {
  75.         return true;
  76.     }
  77. }
020719树型组件:ExpandableListView.ppt
阅读(1416) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~