Android ExpandableGridView的实现
近期在做项目的时候碰到了这样一个布局

在android中有种实现折叠list方式是ExpandableListView 但是官方没有ExpandableGridView
那么怎么样用ExpandableListView来实现一个ExpandableGridView呢
大概的原理是:在每个ExpandableListView 中显示一行,用这行来加载一个GridView
口说无凭,贴上代码
1.加载一个ExpandableListView
private SimpleDataAdapter simpleDataAdapter;
private ExpandableListView mexpandableListview; mexpandableListview = (ExpandableListView) findViewById(R.id.expandablelist);
mSuperAdapter = new SuperveseDataExpandableAdapter(this,mSuperveseData);
mexpandableListview.setAdapter(mSuperAdapter);
mexpandableListview.expandGroup(0);
2.重写BaseExpandableListAdapter
重写BaseExpandableListAdapter,主要是重写getChildView方法 加载一个GridView 动态的计算GridView 高度
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.view, null);
}
CustomGridView gridView = (CustomGridView) convertView .findViewById(R.id.GridView_toolbar); gridView.setNumColumns(2);
gridView.setHorizontalSpacing(10);
gridView.setGravity(Gravity.CENTER);
GridAdapter adapter = new GridAdapter(context, superveseDatas.get(groupPosition).controlDatas);
gridView.setAdapter(adapter);// Adapter int totalHeight = 0;
for (int size = 0; size < adapter.getCount(); size++) {
RelativeLayout relativeLayout = (RelativeLayout) adapter.getView(size, null, gridView);
TextView textView = (TextView) relativeLayout.getChildAt(0);
textView.measure(0, 0);
totalHeight += textView.getMeasuredHeight()*2;
if(size == adapter.getCount() -1){
if (size%2 == 0 ){
totalHeight += textView.getMeasuredHeight()*2;
}
}
}
gridView.SetHeight(totalHeight); return convertView;
}
另外一个地方也需要注意下:
getChildrenCount返回1 因为用一个Item 来加载GridView
@Override
public int getChildrenCount(int groupPosition) {
return 1;
}
最后实现的效果如下

Android ExpandableGridView的实现的更多相关文章
- Android ScrollView嵌套GridView导致GridView只显示一行item
Android ScrollView嵌套GridView导致GridView只显示一行item Android ScrollView在嵌套GridView时候,会导致一个问题发生:GridView只显 ...
- 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新
本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...
- 配置android sdk 环境
1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/
- Android SwipeRefreshLayout 下拉刷新——Hi_博客 Android App 开发笔记
以前写下拉刷新 感觉好费劲,要判断ListView是否滚到顶部,还要加载头布局,还要控制 头布局的状态,等等一大堆.感觉麻烦死了.今天学习了SwipeRefreshLayout 的用法,来分享一下,有 ...
- Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记
以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...
- Android Studio 多个编译环境配置 多渠道打包 APK输出配置
看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...
随机推荐
- 数据库Sharding系列文章
关于数据库Sharding的策略,有人整理出相关的方案,看完收获很大. 数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案 数据库分库分 ...
- 不透明度opacity进阶
一.opacity属性 1.opacity 习惯上说“透明度”,其实应该叫“不透明度”.opacity 意思:不透明,而背景色的默认值:transparent意思才是“透明的”.所以opacity用来 ...
- php 7.0 新特性
php 7 主题是性能优化 SEO 之前版本:开发效率快,语言本身性能差 普通的php网站:IO密集型,瓶颈在mysql上,体现不出来php的性能劣势,在密集计算方面比C,C++,JAVA差几十倍甚 ...
- MySQL复制环境(主从/主主)部署总结性梳理
Mysql复制概念说明Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves) ...
- [LeetCode] Paint House 粉刷房子
There are a row of n houses, each house can be painted with one of the three colors: red, blue or gr ...
- C语言内存分配方法。
当C程序运行在操作系统上时,操作系统会给每一个程序分配一定的栈空间. 堆为所有程序共有的,需要时需要申请访问. 一.栈 局部变量.函数一般在栈空间中. 运行时自动分配&自动回收:栈是自动管理的 ...
- arcgis出图步骤(缩减版)
public boolean dzjyfbPicture(Map<String, Object> map) throws UnknownHostException, IOException ...
- Freemarker中空值 null的处理++++定义数组
http://blog.java-zone.org/archives/800.html <#list listBlogPost as blogPost> </#list> 如果 ...
- android studio 提示翻译
1. you can import your settings from a previous version of Studio可以导入您的设置从先前版本的工作室 2. I want to impo ...
- SSH(Struts2+Spring4+HIbernate5)的简化
今天给大家带来的是一个简单的新闻发布系统 首先在学习过程中我是深有体会,做事情不要浮躁,不要想着一口吃下一个胖子, 最最重要的是理解,理解透了学什么东西都是随心所欲的. 开发环境:win10系统 jd ...