ExpandableListActivity

[功能]

sdk 也有关于ExpandableListActivity 代码例子 路径如下:

写道 android-sdk-windows-1.5_r2\platforms\android-1.5\samples\ApiDemos\src\com\example\android\apis\view

但是sample例子所使用的数据源是静态的 即不能实时变化 使得其实用性大打折扣 现在以动态数据为例

[代码 步骤]

1. 规划数据结构用于存放 Group 及其 子数据 Child

//存放 Groop 数据public List<String> group;//存放 Child 数据 以其所属于的Group细分 public List<List<String>> child;

2. 定义 class ExpandInfoAdapter extends BaseExpandableListAdapter

public class ExpandInfoAdapter extends BaseExpandableListAdapter {@Overridepublic Object getChild(int arg0, int arg1) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getChildId(int arg0, int arg1) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getChildView(int arg0, int arg1, boolean arg2, View arg3,ViewGroup arg4) {// TODO Auto-generated method stubreturn null;}@Overridepublic int getChildrenCount(int arg0) {// TODO Auto-generated method stubreturn 0;}@Overridepublic Object getGroup(int arg0) {// TODO Auto-generated method stubreturn null;}@Overridepublic int getGroupCount() {// TODO Auto-generated method stubreturn 0;}@Overridepublic long getGroupId(int arg0) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getGroupView(int groupPosition, boolean isExpanded,View convertView, ViewGroup parent) {// TODO Auto-generated method stubreturn null;}@Overridepublic boolean hasStableIds() {// TODO Auto-generated method stubreturn false;}@Overridepublic boolean isChildSelectable(int groupPosition, int childPosition) {// TODO Auto-generated method stubreturn false;}}

3. 填充ExpandInfoAdapter 的函数

* 完成与 Child 功能相关的函数列表

写道 public Object getChild(int arg0, int arg1)

public long getChildId(int arg0, int arg1)

public View getChildView(int arg0, int arg1, boolean arg2, View arg3,
ViewGroup arg4)

public int getChildrenCount(int arg0)

其实现如下:

@Overridepublic Object getChild(int arg0, int arg1) {// TODO Auto-generated method stubreturn child.get(arg0).get(arg1);}@Overridepublic long getChildId(int arg0, int arg1) {// TODO Auto-generated method stubreturn arg1;}@Overridepublic int getChildrenCount(int arg0) {// TODO Auto-generated method stubreturn child.get(arg0).size();}@Overridepublic View getChildView(int arg0, int arg1, boolean arg2, View arg3,ViewGroup arg4) {// TODO Auto-generated method stubreturn getChildViewStub(child.get(arg0).get(arg1).toString());}public TextView getChildViewStub(String s) {            // Layout parameters for the ExpandableListView            AbsListView.LayoutParams lp = new AbsListView.LayoutParams(                    ViewGroup.LayoutParams.FILL_PARENT, 64);            TextView text = new TextView(activity);            text.setLayoutParams(lp);            text.setTextSize(20);            text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);            text.setPadding(36, 0, 0, 0);            text.setText(s);            return text;        }

* 再完成与 Group 有关的函数列表

写道 public Object getGroup(int arg0)

public int getGroupCount()

public long getGroupId(int arg0)

public View getGroupView(int arg0, boolean arg1, View arg2,
ViewGroup arg3)

其实现如下:

@Overridepublic int getGroupCount() {// TODO Auto-generated method stubreturn group.size();}@Overridepublic long getGroupId(int arg0) {// TODO Auto-generated method stubreturn arg0;}@Overridepublic View getGroupView(int arg0, boolean arg1, View arg2,ViewGroup arg3) {// TODO Auto-generated method stubreturn getGroupViewStub(getGroup(arg0).toString());}public TextView getGroupViewStub(String s) {            // Layout parameters for the ExpandableListView            AbsListView.LayoutParams lp = new AbsListView.LayoutParams(                    ViewGroup.LayoutParams.FILL_PARENT, 64);            TextView text = new TextView(activity);            text.setLayoutParams(lp);            text.setTextSize(20);            text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);            text.setPadding(36, 0, 0, 0);            text.setText(s);            return text;        }

4. BaseExpandableListAdapter 除了 Group Child 外 还有一些别的函数 如:

*

public void onGroupExpanded(int groupPosition){        }                public void onGroupCollapsed(int groupPosition){        }

写道 二者属于回调函数 当ExpandableListActivity中的Group 被展开/收拢 就会回调上面的函数

*

public boolean isChildSelectable(int arg0, int arg1) {// TODO Auto-generated method stubreturn true;}

写道 用于设定 Child 是否可以选择 获取 selected

5. 插入数据

public void addItemByValue(String n,String c1,String c2){    group.add(n);        List<String> item = new ArrayList<String>();        item.add(NAME+n);    item.add(PHONE+c1);    item.add(SEX+c2);        child.add(item);    }

本例的数据为:

addItemByValue("Griffin","051782214","man");        addItemByValue("Billy","110","mal");        addItemByValue("Kindy","132","femal");        addItemByValue("Patric","13321234562","femal");

6. emulator 运行截图:

* Group 的截图:

* Griffin 选项展开截图:

* Patric 选项展开截图:

done!

更多相关文章

  1. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  2. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  3. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  4. Qt example之Joke for Android( make for my honey)
  5. 微信图片选择器
  6. Android解决CoordinatorLayout折叠布局RecyclerView最后一条数据
  7. Android(安卓)Camera调用流程
  8. Android(安卓)JNI开发摘录(二)之JNI数组处理
  9. Android(安卓)使用Instrumentation进行界面的单元测试

随机推荐

  1. Android——PackageManager
  2. android自带的xml解析类分析
  3. android EditText 设置密码锁源码
  4. Android扫描附近的WIFI联网
  5. android直接创建桌面快捷方式
  6. 3 Notification高级
  7. [转] Android 在程序中如何动态的修改程
  8. LayoutInflater.inflate简易的使用说明记
  9. 帧动画
  10. android实习程序6——拨号通话