ExpandableListView用法如下

1.定义布局文件main.xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <ExpandableListView
android:childIndicator="@drawable/icon"
android:id="@+id/el"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ExpandableListView> </LinearLayout>

2.java代码如下

public class MainActivity extends Activity {

    final int[] images = { R.drawable.p, R.drawable.t, R.drawable.z };
final String[] names = { "人族", "虫族", "神族" };
final String[][] names_ = { { "特种兵", "警察", "城管" }, { "蚂蚁", "蚯蚓", "蜘蛛" },
{ "大神", "玉皇大帝", "如来佛祖" } }; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
ExpandableListView el = (ExpandableListView) findViewById(R.id.el);
//此处使用ExpandableListAdapter的子类BaseExpandableListAdapter,否则使用父类会有很多方法需要重写
el.setAdapter(new BaseExpandableListAdapter() {
@Override
public boolean isChildSelectable(int groupPosition,
int childPosition) {
return true;
} @Override
public boolean hasStableIds() {
return true;
}
//自定义一个方法,用于操作 父级/子级菜单中的文本
private TextView getTextView() {
AbsListView.LayoutParams param = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, );//定义列表每行的宽度以及高度
TextView tv = new TextView(MainActivity.this);
tv.setLayoutParams(param);
tv.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);//定义文本位置
tv.setPadding(, , , );//居左60dp
tv.setTextSize();
return tv;
} //获取父级视图--把图片和文本挂载到 线性布局上
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
LinearLayout ll = new LinearLayout(MainActivity.this);
ll.setOrientation();
ImageView iv = new ImageView(MainActivity.this);
iv.setImageResource(images[groupPosition]);
ll.addView(iv); TextView tv = getTextView();
tv.setText(getGroup(groupPosition).toString());
ll.addView(tv);
return ll;
} @Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
//获取父级菜单数量
@Override
public int getGroupCount() {
return names.length;
} //获取每个父级对象
@Override
public Object getGroup(int groupPosition) {
return names[groupPosition];
}
//获取下拉子菜单的数量
@Override
public int getChildrenCount(int groupPosition) {
return names_[groupPosition].length;
}
//显示下拉菜单项
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
TextView tv = getTextView();
tv.setText(getChild(groupPosition, childPosition).toString());
return tv;
}
//获取下拉子菜单的id
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
} //获取下拉子菜单中的 每个对象
@Override
public Object getChild(int groupPosition, int childPosition) {
return names_[groupPosition][childPosition];
}
});
}

ExpandableListView 可折叠的下拉listview的更多相关文章

  1. Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公共类)

    介绍总结的一些android公共库,包含缓存(图片缓存.预取缓存).公共View(下拉及底部加载更多ListView.底部加载更多ScrollView.滑动一页Gallery).及Android常用工 ...

  2. android UI进阶之实现listview的下拉加载

    关于listview的操作五花八门,有下拉刷新,分级显示,分页列表,逐页加载等,以后会陆续和大家分享这些技术,今天讲下下拉加载这个功能的实现. 最初的下拉加载应该是ios上的效果,现在很多应用如新浪微 ...

  3. 魅族手机Listview下拉出现hold字样的奇葩问题解决方案

    前几天测试在魅族手机上测试,下拉listview,出现奇葩的hold字样,╭∩╮(︶︿︶)╭∩╮,这锅老子不背,但是问题还得解决吧,如下是对于魅族不同版本的出现这种情况的处理: 2.3之前: andr ...

  4. ListView实现下拉刷新(一)建立头布局

    一.效果演示 ListView实现下拉刷新,是很常见的功能.下面是一个模拟的效果,如下图:                                   效果说明:当往下拉ListView的时候 ...

  5. 【Android】下拉刷新实现

    关于这方面的文章百度下有很多,我就只写写我自己实现过程. 我觉得学习一门语言不是做了几个项目就可以认为自己会了,这只是暂时的,若没有笔记,时间长了,你是怎么解决某些问题,估计连你自己都忘了,又得费时费 ...

  6. ListView上拉加载,下拉刷新 PullToRefresh的使用

    PullToRefresh是一套实现非常好的下拉刷新库,它支持:ListViewExpandableListViewGridViewWebViewScrollViewHorizontalScrollV ...

  7. Android 使用PullToRefresh实现下拉刷新和上拉加载(ExpandableListView)

    PullToRefresh是一套实现非常好的下拉刷新库,它支持: 1.ListView 2.ExpandableListView 3.GridView 4.WebView 等多种常用的需要刷新的Vie ...

  8. android ListView上拉加载更多 下拉刷新功能实现(采用pull-to-refresh)

    Android实现上拉加载更多功能以及下拉刷新功能, 采用了目前比较火的PullToRefresh,他是目前实现比较好的下拉刷新的类库. 目前他支持的控件有:ListView, ExpandableL ...

  9. listview下拉刷新和上拉加载更多的多种实现方案

    listview经常结合下来刷新和上拉加载更多使用,本文总结了三种常用到的方案分别作出说明. 方案一:添加头布局和脚布局        android系统为listview提供了addfootview ...

随机推荐

  1. struts与springmvc有何区别

    Struts2与SpringMVC有何区别? (1)SpringMVC的核心控制器是基于servlet技术,而Struts2是基于filter. (2)Struts2是类级别的拦截, 一个类对应一个r ...

  2. 01-WIN2012R2+SQL2016故障转移群集的搭建

    一.前期准备  1.1.准备4台机器 机器名 IP 功能 jf-yukong 192.168.10.200 做域控服务器 Jf-storage 192.168.10.201 做ISCSI存储服务器 J ...

  3. RabbitMQ的基本介绍及与Spring整合

    一,场景回顾 ​ 最近做电商购物项目,在分布式中搜索服务,商品详情服务都是独立的模块.那么有一个问题就是: 商品的原始数据保存在数据库中,增删改查都在数据库中完成. 搜索服务数据来源是索引库,如果数据 ...

  4. html5 拖拽(drag)和f放置(drop)

    知识要点 HTML5 (drag&drop) API  (Event) 拖放数据(对象):DataTransfer 拖放内容:setData getData 拖放效果(动作):dropEffe ...

  5. Mina各组件介绍

    Mina各组件介绍 上一篇文章已经系统的介绍了Mina的运行流程,Apache推出的Mina性能上很是高效,上章节我们知道内部有很多的类,各个类之间的依赖也是很多,他们之家都是相互依赖. 下面主要看看 ...

  6. Python爬虫(二)正则表达式

    一.介绍 1.概念 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来 ...

  7. 理解Java反射机制

    理解Java反射机制 转载请注明出处,谢谢! 一.Java反射简介 什么是反射? Java的反射机制是Java特性之一,反射机制是构建框架技术的基础所在.灵活掌握Java反射机制,对学习框架技术有很大 ...

  8. 记一次vue使用innerHTML更新dom出现的样式失效问题

    场景说明:我在实现对html拼接后重新渲染到页面的功能遇到了一点问题,当然实际的业务逻辑并没有这么简单,所以只提出这个问题,而不讨论如何修正: 具体情况:使用refs获取到dom,然后使用innerH ...

  9. 问题.spring源码转换为eclipse遇到的问题

    1.下载spring源码 2.下载安装gradle,配置环境变量 3.在spring子项目下执行命令:gradle cleanidea eclipse,会生成对应的.project及.classpat ...

  10. [SNOI2019]字符串

    名称:字符串 来源:2019年陕西省选 题目内容 传送门 洛谷(P5392) 题目描述 给出一个长度为$n$的由小写字母组成的字符串$a$,设其中第$i$个字符为$a_i(1≤i≤n)$. 设删掉第$ ...