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三级菜单的使用”示例中,我们将深入探讨如何创建并操作一个支持三级菜单的`ExpandableListView`。 首先,`ExpandableListView`是`ListView`的扩展,它提供了更丰富的功能,可以...
本教程将深入探讨如何在Android应用中使用ExpandableListView,以及如何实现其核心功能。 首先,了解ExpandableListView的基本结构。这个控件由两层数据构成:父组(Group)和子项(Child)。每个父组可以包含多个...
在Android开发中,`ExpandableListView`是一种常用的控件,它可以展示可折叠的列表,具有层级结构,非常适合处理分类数据。而"android ExpandableListView子集异步加载+IphoneTreeView"这个主题主要关注如何在`...
在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展开和折叠分组,以显示或隐藏子项,这种布局方式非常适合展现层级结构的数据。在这个特定的示例中,标题提到“箭头在右边”,这通常是指在每个...
在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展开和折叠分组,每个分组下可以包含多个子项。这种控件在显示层次结构数据时非常实用,比如目录结构、菜单列表或者分类信息等。本文将详细探讨`...
在Android开发中,`ExpandableListView`是一种非常实用的视图组件,用于展示具有层级结构的数据,例如分类列表。在日常应用中,我们经常会遇到需要将数据按照分组进行展示的情况,比如联系人按字母分组、菜单按功能...
以上就是关于Android中`ExpandableListView`的基本使用和理解。通过自定义适配器和监听事件,我们可以创建出满足需求的层级展示效果。在实际应用中,还需要考虑性能优化,比如使用`ViewHolder`模式来减少视图查找和...
在Android开发中,有时我们需要展示层次结构复杂的数据,这时`ExpandableListView`和`GridView`的组合使用就显得尤为重要。`ExpandableListView`允许我们显示可展开和折叠的列表项,而`GridView`则用于展示网格布局...
然而,最近我的项目需要在屏幕方面使用这两种类型的列表。新的屏幕是有一个可折叠列表(1组ExpandableListview)的和它下面的一个标准的ListView。复杂的问题,这些名单被要求处理两套不同的数据显示不同的布局。
在Android开发中,ExpandableListView是一个非常有用的控件,它允许我们展示数据以树形结构的形式,这在处理层级关系...总之,熟练掌握ExpandableListView的使用,能够帮助开发者构建更复杂的用户界面,提升用户体验。
在"android ExpandableListView demo"项目中,我们将深入探讨如何在Android应用程序中使用`ExpandableListView`。 首先,`ExpandableListView`的核心特性是它的分组和子项概念。每个分组(Group)可以包含多个子项...
在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展示层次结构的数据,类似于树形结构。在这个特定的场景中,我们探讨的是如何在`ExpandableListView`的组(group)和子项(child)中都添加复选...
在Android开发中,`ExpandableListView`是一种常用的控件,用于展示可以展开和折叠的列表,通常用于构建具有层级结构的数据展示,例如树形目录。在这个案例中,我们讨论的是如何利用`ExpandableListView`创建一个...
在Android开发中,`ExpandableListView`是一种常用的控件,它扩展了基本的`ListView`功能,允许子项可以展开和折叠,展示更多的详细信息。`ExpandableListView`非常适合用于展示具有层次结构的数据,比如菜单、目录...
本篇文章将深入探讨如何在Android应用中有效地使用`ExpandableListView`。 ### 一、`ExpandableListView`的基本概念 `ExpandableListView`是`ListView`的一个扩展,增加了可折叠和可展开的功能。与`ListView`相比...
总的来说,`ExpandableListView`是Android平台中用于显示层次数据的强大工具,理解和掌握它的使用技巧能够帮助我们构建出更直观、更具交互性的用户界面。通过深入学习源码,开发者还可以对其进行定制,以满足更复杂...
在Android开发中,ExpandableListView是一种可扩展的列表视图,它可以包含多个子项,非常适合用来展示层次结构的数据。在本项目"Android 扩展 带CheckBox的expandableListview"中,开发者针对ExpandableListView进行...
本示例将详细介绍如何在Android应用中使用`ExpandableListView`。 首先,理解`ExpandableListView`的基本概念: 1. **分组(Group)**:`ExpandableListView`中的每个可折叠的部分称为一个分组,它由一个或多个...
CommentWithReplyView-master 基于ExpandableListView实现评论和回复的功能。 > 说明 ...处理了NestedScrollView、ExpandableListView和CoordinatorLayout的嵌套问题 点击某条评论,即可@ta进行回复