ExpandableListActivity 使用

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 {

		@Override
		public Object getChild(int arg0, int arg1) {
			// TODO Auto-generated method stub
			return null;
		}

		@Override
		public long getChildId(int arg0, int arg1) {
			// TODO Auto-generated method stub
			return 0;
		}

		@Override
		public View getChildView(int arg0, int arg1, boolean arg2, View arg3,
				ViewGroup arg4) {
			// TODO Auto-generated method stub
			return null;
		}

		@Override
		public int getChildrenCount(int arg0) {
			// TODO Auto-generated method stub
			return 0;
		}

		@Override
		public Object getGroup(int arg0) {
			// TODO Auto-generated method stub
			return null;
		}

		@Override
		public int getGroupCount() {
			// TODO Auto-generated method stub
			return 0;
		}

		@Override
		public long getGroupId(int arg0) {
			// TODO Auto-generated method stub
			return 0;
		}

		@Override
		public View getGroupView(int groupPosition, boolean isExpanded,
				View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
			return null;
		}

		@Override
		public boolean hasStableIds() {
			// TODO Auto-generated method stub
			return false;
		}

		@Override
		public boolean isChildSelectable(int groupPosition, int childPosition) {
			// TODO Auto-generated method stub
			return 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)

 

其实现如下:

@Override
		public Object getChild(int arg0, int arg1) {
			// TODO Auto-generated method stub
			return child.get(arg0).get(arg1);
		}

		@Override
		public long getChildId(int arg0, int arg1) {
			// TODO Auto-generated method stub
			return arg1;
		}
		
		@Override
		public int getChildrenCount(int arg0) {
			// TODO Auto-generated method stub
			return child.get(arg0).size();
		}

		@Override
		public View getChildView(int arg0, int arg1, boolean arg2, View arg3,
				ViewGroup arg4) {
			// TODO Auto-generated method stub
			return 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)

 

其实现如下:

@Override
		public int getGroupCount() {
			// TODO Auto-generated method stub
			return group.size();
		}

		@Override
		public long getGroupId(int arg0) {
			// TODO Auto-generated method stub
			return arg0;
		}

		@Override
		public View getGroupView(int arg0, boolean arg1, View arg2,
				ViewGroup arg3) {
			// TODO Auto-generated method stub
			return 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 stub
			return 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!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值