`

Android ExpandableListView的使用

 
阅读更多

ExpandableListView继承于ListView,但是它不同于ListView,它可以有多个Group,每一个Group里都可以有多个Child。

比如可以实现QQ好友栏里类似的功能。

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;
/**
 * @author wing
 * @date 2011/8/15
 */
public class OwnExpandableListAdapter extends BaseExpandableListAdapter {
    private String[] group;
    private String[][] child;
    private Context context;
    public OwnExpandableListAdapter(String[] group,String[][] child,Context context)
    {
    	this.group=group;
    	this.child=child;
    	this.context=context;
    }
    /**
     *  获取Group中的一个Child的值
     */
	@Override
	public Object getChild(int groupPosition, int childPosition)  
	{
		
		return child[groupPosition][childPosition];
	}
    /**
     *  获取Group中的一个Child的ID,本人没有写
     */
	@Override
	public long getChildId(int groupPosition, int childPosition) {
		
		return 0;
	}
  /**
   *  Child的视图
   */
	@Override
	public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) 
	{
		//每个Group的Child,用TextView表示,当然也可以用其他的例如button之类的控件
		TextView textView=new TextView(context);
		textView.setText(child[groupPosition][childPosition]);
		textView.setPadding(36, 0, 0, 0);
		return textView;
	}
	  /**
	   *  某个Group的Child的数量
	   */
	@Override
	public int getChildrenCount(int groupPosition) {
		
		return child[groupPosition].length;
	}
   
	@Override
	public Object getGroup(int arg0) {
		
		return null;
	}
    /**
     *  Group的数目
     */
	@Override
	public int getGroupCount() {
		
		return group.length;
	}

	@Override
	public long getGroupId(int arg0) {
		
		return 0;
	}
    /**
     * Group的视图
     */
	@Override
	public View getGroupView(int groupPosition, boolean isExpanded,View convertView, ViewGroup parent) {
		//每个Group也用TextView表示,当然也可以用其他的例如button之类的控件
		TextView textView=new TextView(context);
		textView.setText(group[groupPosition]);
		textView.setPadding(36, 0, 0, 0);
		return textView;
	}

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

	@Override
	public boolean isChildSelectable(int arg0, int arg1) {
		// TODO Auto-generated method stub
		return false;
	}

}
上面是实现的一个ExpandableListAdapter,用于给ExpandableListView填充数据。

可以看见每一个Group和Child都是用的TextView。当然也可以用Button。

然后再使用。

        String[]group= {"我的好友","同事"};
        String[][]child= {{"张三","李四","王五"},{"赵六","杨七","嘿嘿","哈哈"}};
        expandableListView.setAdapter(new OwnExpandableListAdapter(group, child, this));

另外,其实ExpandableListView也可以实现HTML中下拉框的功能。

首先介绍几个方法:

expandableListView.setDivider();这个是设定每个Group之间的分割线。

expandableListView.setGroupIndicator();这个是设定每个Group之前的那个图标。

expandableListView.collapseGroup(int group); 将第group组收起

expandableListView.expandGroup(int group); 将第group组展开


那么如何实现HTML中下拉框类似的功能呢?

由于我做的时候使用的是项目素材。不方便截图。所以就给大家一点提示。

每个Group和每个Child都使用Button,然后设定自己的样式(button selector)。

然后,每个Button都添加自己的事件,Group Button点击时,展开列表。Child Button点击时,收缩列表,并且改变Group Button的内容即可。

这样就可以实现下拉框的功能了。而且根据Button selector,基本可以定义出自己的样式。

PS:

刚毕业工作,由于项目正在测试。自己终于肯花一点时间来写写博客了。要学习的东西很多,加油!

分享到:
评论

相关推荐

    android ExpandableListView三级菜单的使用

    在这个“android ExpandableListView三级菜单的使用”示例中,我们将深入探讨如何创建并操作一个支持三级菜单的`ExpandableListView`。 首先,`ExpandableListView`是`ListView`的扩展,它提供了更丰富的功能,可以...

    android Expandablelistview使用

    本教程将深入探讨如何在Android应用中使用ExpandableListView,以及如何实现其核心功能。 首先,了解ExpandableListView的基本结构。这个控件由两层数据构成:父组(Group)和子项(Child)。每个父组可以包含多个...

    android ExpandableListView子集异步加载+IphoneTreeView

    在Android开发中,`ExpandableListView`是一种常用的控件,它可以展示可折叠的列表,具有层级结构,非常适合处理分类数据。而"android ExpandableListView子集异步加载+IphoneTreeView"这个主题主要关注如何在`...

    android ExpandableListView 箭头在右边 带折叠功能

    在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展开和折叠分组,以显示或隐藏子项,这种布局方式非常适合展现层级结构的数据。在这个特定的示例中,标题提到“箭头在右边”,这通常是指在每个...

    android ExpandableListView完整实现

    在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展开和折叠分组,每个分组下可以包含多个子项。这种控件在显示层次结构数据时非常实用,比如目录结构、菜单列表或者分类信息等。本文将详细探讨`...

    Android中ExpandableListView使用

    在Android开发中,`ExpandableListView`是一种非常实用的视图组件,用于展示具有层级结构的数据,例如分类列表。在日常应用中,我们经常会遇到需要将数据按照分组进行展示的情况,比如联系人按字母分组、菜单按功能...

    android ExpandableListView

    以上就是关于Android中`ExpandableListView`的基本使用和理解。通过自定义适配器和监听事件,我们可以创建出满足需求的层级展示效果。在实际应用中,还需要考虑性能优化,比如使用`ViewHolder`模式来减少视图查找和...

    android中ExpandableListView嵌套GridView的使用

    在Android开发中,有时我们需要展示层次结构复杂的数据,这时`ExpandableListView`和`GridView`的组合使用就显得尤为重要。`ExpandableListView`允许我们显示可展开和折叠的列表项,而`GridView`则用于展示网格布局...

    Android ExpandableListView 例子源代码

    然而,最近我的项目需要在屏幕方面使用这两种类型的列表。新的屏幕是有一个可折叠列表(1组ExpandableListview)的和它下面的一个标准的ListView。复杂的问题,这些名单被要求处理两套不同的数据显示不同的布局。

    Android ExpandableListView双层嵌套实现三级树形菜单

    在Android开发中,ExpandableListView是一个非常有用的控件,它允许我们展示数据以树形结构的形式,这在处理层级关系...总之,熟练掌握ExpandableListView的使用,能够帮助开发者构建更复杂的用户界面,提升用户体验。

    android ExpandableListView demo

    在"android ExpandableListView demo"项目中,我们将深入探讨如何在Android应用程序中使用`ExpandableListView`。 首先,`ExpandableListView`的核心特性是它的分组和子项概念。每个分组(Group)可以包含多个子项...

    android ExpandableListView的group和child都有checkbox

    在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展示层次结构的数据,类似于树形结构。在这个特定的场景中,我们探讨的是如何在`ExpandableListView`的组(group)和子项(child)中都添加复选...

    android ExpandableListView 四级树形目录

    在Android开发中,`ExpandableListView`是一种常用的控件,用于展示可以展开和折叠的列表,通常用于构建具有层级结构的数据展示,例如树形目录。在这个案例中,我们讨论的是如何利用`ExpandableListView`创建一个...

    android ExpandableListView 悬停

    在Android开发中,`ExpandableListView`是一种常用的控件,它扩展了基本的`ListView`功能,允许子项可以展开和折叠,展示更多的详细信息。`ExpandableListView`非常适合用于展示具有层次结构的数据,比如菜单、目录...

    Android之ExpandableListView控件的使用

    本篇文章将深入探讨如何在Android应用中有效地使用`ExpandableListView`。 ### 一、`ExpandableListView`的基本概念 `ExpandableListView`是`ListView`的一个扩展,增加了可折叠和可展开的功能。与`ListView`相比...

    Android之ExpandableListView控件

    总的来说,`ExpandableListView`是Android平台中用于显示层次数据的强大工具,理解和掌握它的使用技巧能够帮助我们构建出更直观、更具交互性的用户界面。通过深入学习源码,开发者还可以对其进行定制,以满足更复杂...

    Android 扩展 带CheckBox的expandableListview

    在Android开发中,ExpandableListView是一种可扩展的列表视图,它可以包含多个子项,非常适合用来展示层次结构的数据。在本项目"Android 扩展 带CheckBox的expandableListview"中,开发者针对ExpandableListView进行...

    Android中ExpandableListView示例

    本示例将详细介绍如何在Android应用中使用`ExpandableListView`。 首先,理解`ExpandableListView`的基本概念: 1. **分组(Group)**:`ExpandableListView`中的每个可折叠的部分称为一个分组,它由一个或多个...

    Android代码-基于ExpandableListView实现评论和回复的功能。

    CommentWithReplyView-master 基于ExpandableListView实现评论和回复的功能。 > 说明 ...处理了NestedScrollView、ExpandableListView和CoordinatorLayout的嵌套问题 点击某条评论,即可@ta进行回复

Global site tag (gtag.js) - Google Analytics