Android中实现类似qq好友列表展开收起的效果

最近两天学习实现了一个功能,感觉很好,一定要记录下来大笑

在网上找了一些资料,林林总总,总是不那么齐全,有的代码做成小Demo还会报错,需要自己调试半天。也幸好如此,我将此功能涉及到的一些知识点理解的更加深刻一些。

功能需求:设计一个列表,类似qq好友列表,点击一级标题(对应:组名称),展开二级内容(对应:好友列表),再点击,则收起二级内容。一级标题下有一按钮,随着列表的展开收起自动的跟在一级列表下。

该功能使用了Android中的一个控件:ExpandableListView。

ExpandableListView是ListView的子类,它在普通的ListView的基础上进行了拓展,它把应用中的列表分为几组,每组又包含多个列表项。它的用法和ListView很像,只是其所显示的列表项应该由ExpandableListAdapter提供。下面提供该控件一些属性说明:

android:groupIndicator      ————————————     显示在组列表旁边的Drawable对象:可以是一个图片。

android:childIndicator        ————————————     显示在子列表旁边的Drawable对象

android:childDivider           ————————————     指定各组内子类表项之间的分割条:图片不会完全显示,分离子列表项的是一条直线。

android:childIndicatorLeft         ——————————     子列表项指示符的左边约束位置:即从左边0位置开始计数,比如,假设指示符是一个图标,给定这个属性值为3dp,即表示从左端3dp位置开始显示此图标。

android:childIndicatorRight      ——————————     子列表项指示符的右边约束位置:表示左端从什么位置开始。

android:indicatorLeft         ————————————      组列表项指示器的左边约束位置

注意:在XML文件中,如果ExpandableListView上一级视图的大小没有严格定义的话,则不能对ExpandableListView的android:layout_height属性使用wrap_content值。(例如,如果上一级视图是ScrollView的话,则不应该指定wrap_content的值,因为它可以是任意的长度。不过,如果ExpandableListView的上一级视图有特定的大小的话,比如100像素,则可以使用wrap_content)。

适用于ExpandableListView的Adapter要继承BaseExpandableListAdapter,且必须重载getGroupView和getChildView两个最重要的方法。使用BaseExpandableListAdapter时,需要重载一下方法。

/**
	 * 取得分组数
	 * 
	 * @return 组数
	 */
	@Override
	public int getGroupCount() {
		// TODO Auto-generated method stub
		return 0;
	}

	/**
	 * 取得指定分组的子元素数
	 * 
	 * @param groupPosition
	 *            :要取得子元素个数的分组位置
	 * @return:指定分组的子元素个数
	 */
	@Override
	public int getChildrenCount(int groupPosition) {
		// TODO Auto-generated method stub
		return 0;
	}

	/**
	 * 取得与给定分组关联的数据
	 * 
	 * @param groupPosition
	 *            分组的位置
	 * @return 指定分组的数据
	 */
	@Override
	public Object getGroup(int groupPosition) {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * 取得与指定分组、指定子项目关联的数据
	 * 
	 * @param groupPosition
	 *            :包含子视图的分组的位置
  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值