ExpandableListView 可折叠的下拉listview
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的更多相关文章
- Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公共类)
		
介绍总结的一些android公共库,包含缓存(图片缓存.预取缓存).公共View(下拉及底部加载更多ListView.底部加载更多ScrollView.滑动一页Gallery).及Android常用工 ...
 - android UI进阶之实现listview的下拉加载
		
关于listview的操作五花八门,有下拉刷新,分级显示,分页列表,逐页加载等,以后会陆续和大家分享这些技术,今天讲下下拉加载这个功能的实现. 最初的下拉加载应该是ios上的效果,现在很多应用如新浪微 ...
 - 魅族手机Listview下拉出现hold字样的奇葩问题解决方案
		
前几天测试在魅族手机上测试,下拉listview,出现奇葩的hold字样,╭∩╮(︶︿︶)╭∩╮,这锅老子不背,但是问题还得解决吧,如下是对于魅族不同版本的出现这种情况的处理: 2.3之前: andr ...
 - ListView实现下拉刷新(一)建立头布局
		
一.效果演示 ListView实现下拉刷新,是很常见的功能.下面是一个模拟的效果,如下图: 效果说明:当往下拉ListView的时候 ...
 - 【Android】下拉刷新实现
		
关于这方面的文章百度下有很多,我就只写写我自己实现过程. 我觉得学习一门语言不是做了几个项目就可以认为自己会了,这只是暂时的,若没有笔记,时间长了,你是怎么解决某些问题,估计连你自己都忘了,又得费时费 ...
 - ListView上拉加载,下拉刷新 PullToRefresh的使用
		
PullToRefresh是一套实现非常好的下拉刷新库,它支持:ListViewExpandableListViewGridViewWebViewScrollViewHorizontalScrollV ...
 - Android 使用PullToRefresh实现下拉刷新和上拉加载(ExpandableListView)
		
PullToRefresh是一套实现非常好的下拉刷新库,它支持: 1.ListView 2.ExpandableListView 3.GridView 4.WebView 等多种常用的需要刷新的Vie ...
 - android ListView上拉加载更多 下拉刷新功能实现(采用pull-to-refresh)
		
Android实现上拉加载更多功能以及下拉刷新功能, 采用了目前比较火的PullToRefresh,他是目前实现比较好的下拉刷新的类库. 目前他支持的控件有:ListView, ExpandableL ...
 - listview下拉刷新和上拉加载更多的多种实现方案
		
listview经常结合下来刷新和上拉加载更多使用,本文总结了三种常用到的方案分别作出说明. 方案一:添加头布局和脚布局 android系统为listview提供了addfootview ...
 
随机推荐
- wwww
			
public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{ ; priva ...
 - Jenkins持续集成项目搭建——基于Python Selenium自动化测试
			
参考链接:https://www.liaoxuefeng.com/article/1083282007018592 第一步:去官网https://jenkins.io/下载最新的war包 第二步:安装 ...
 - Codeforces 436D Pudding Monsters
			
题意简述 开始有无限长的一段格子,有n个格子种有布丁怪兽,一开始连续的布丁怪兽算一个布丁怪兽. 每回合你可以将一个布丁怪兽向左或右移动,他会在碰到第一个布丁怪兽时停下,并与其合并. 有m个特殊格子,询 ...
 - Nacos(三):Nacos与OpenFeign的对接使用
			
前言 上篇文章中,简单介绍了如何在SpringCloud项目中接入Nacos作为注册中心,其中服务消费者是通过RestTemplate+Ribbon的方式来进行服务调用的. 实际上在日常项目中服务间调 ...
 - spring-cloud-config 配置中心快速上手
			
spring-cloud-config 配置中心实现 Spring Cloud Config 用于为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,分为server端和client端. s ...
 - app发布当天,用户无法登录
			
原因:当用户登录时候有商城用户的触发器存在,它会让商城用户也更新成登录状态. 由于用户量大,导致数据库锁死. 最后解决案:删掉触发器,在app的接口登录程序里,追加商城用户更新成登录的操作. 他案1: ...
 - 16.XML语法、CDATA、约束(DTD、Schema)讲解
			
xml主要用来描述数据,比如配置文件,网络之间传输数据等,并且在android中也经常用xml来布局,,接下来便来学习xml常用的东西 1.XML语法 xml语法分为: 1.1 文档声明 必须位于文档 ...
 - 如何编写高质量的 JS 函数(1) -- 敲山震虎篇
			
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/7lCK9cHmunvYlbm7Xi7JxQ作者:杨昆 一千个读者,有一千个哈姆雷特. 此系列文 ...
 - 梳理commons-lang工具包
			
目录 概述 builder包 NumberUtils 转换 String 类型为原始类型 截取小数位数 创建包装类型 最大值 | 最小值 关于数字的检查 mutable包 relect包 Constr ...
 - CAP 2.6 版本发布通告
			
前言 今天,我们很高兴宣布 CAP 发布 2.6 版本正式版.同时我们也很高兴的告诉你 CAP 在 GitHub 已经突破了3000 Star. 自从上次 CAP 2.5 版本发布 以来,已经过去了几 ...