ExpandableListView 里面嵌套GridView实现高度自适应
很早之前做过一个商城的app 也是第一次做安卓。
实现的效果如下:

因为一开始做安卓,很多写的代码都不规范,在下面上代码的地方,还请高手指点(勿喷,楼主是自尊心很强的屌丝)
这个效果要解决2个大问题,
第一个是ExpandableListView 如何放置gridview ,这个比较好做 思路就是adapter里实现
第二个是在ExpandableListView里面展开后,GirdView如何能充满ExpandableListView的item, 就是楼上的效果
好,先来解决第一个。如何放置gridview,
在这里使用的adapter 是BaseExpandableListAdapter 并且实现点击girdview里面item的事件
- //适配器
- class madapter extends BaseExpandableListAdapter implements OnItemClickListener {
- @Override
- public int getGroupCount() {
- // TODO Auto-generated method stub
- return alllist.size();
- }
- @Override
- public int getChildrenCount(int groupPosition) {
- return 1;
- }
- @Override
- public Object getGroup(int groupPosition) {
- // TODO Auto-generated method stub
- return alllist.get(groupPosition).parentnode;
- }
- @Override
- public Object getChild(int groupPosition, int childPosition) {
- // TODO Auto-generated method stub
- return null;
- }
- @Override
- public long getGroupId(int groupPosition) {
- // TODO Auto-generated method stub
- return groupPosition;
- }
- @Override
- public long getChildId(int groupPosition, int childPosition) {
- // TODO Auto-generated method stub
- return childPosition;
- }
- @Override
- public boolean hasStableIds() {
- // TODO Auto-generated method stub
- return true;
- }
- @Override
- public View getGroupView(int groupPosition, boolean isExpanded,
- View convertView, ViewGroup parent) {
- TextView text = createView(getGroup(groupPosition).toString(),getContext());
- return text;
- }
- @Override
- public View getChildView(int groupPosition, int childPosition,
- boolean isLastChild, View convertView, ViewGroup parent) {
- layoutInflater = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- ViewGroup item = (ViewGroup)layoutInflater.inflate(R.layout.shops_allshops_type_grid, null); //载入gridview布局
- grid = (ShowAllShopsType_list_grid) item.findViewById(R.id.shopstypegridview);// 获取girdview的节点
- grid.setNumColumns(4);// 设置每行列数
- grid.setGravity(Gravity.CENTER);// 位置居中
- grid.setVerticalSpacing(10);
- grid.setAdapter(gridAdapter(parent.getContext(),(int)getGroupId(groupPosition)));
- grid.setOnItemClickListener(this);
- grid.setVisibility(View.VISIBLE);
- return item;
- }
- @Override
- public boolean isChildSelectable(int groupPosition, int childPosition) {
- // TODO Auto-generated method stub
- return true;
- }
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position,
- long id) {
- Intent intent =new Intent(getContext(),ShowAllShops.class);
- intent.putExtra("text", ((TextView)view).getText());
- //getContext().startActivity(intent);
- shopactivty.setResult(1, intent);
- shopactivty.finish();
- }
- }
代码只是提供思路的,详细的哪里不懂可以评论发
第二个问题是gridview的自适应
- public class ShowAllShopsType_list_grid extends GridView{
- public ShowAllShopsType_list_grid(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
- /**
- * 设置不滚动
- */
- public void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
- {
- int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
- MeasureSpec.AT_MOST);
- super.onMeasure(widthMeasureSpec, expandSpec);
- }
这里只是重写了onMeasure 方法,这样的重写 在ScrollView里放置ListView的冲突上面一样可以解决。
ExpandableListView 里面嵌套GridView实现高度自适应的更多相关文章
- GridView的高度自适应
接着上面一篇文章. 当GridView不知道parent高度的时候,也就是MeasureSpec是UNSPECIFIED,这个时候,GridView高度为第一个child的高度,并显示滚动条. mIt ...
- flex布局嵌套之高度自适应
查遍各大资源无任何flex嵌套布局的例子,经过自己折腾完成了项目中的高度自适应需求(更多应用于前端组件) 效果图: html代码:(关键地方已经用颜色特别标识 ^_^) <!DOCTYPE ht ...
- android设置GridView高度自适应,实现全屏铺满效果
使GridView每个item的高度自适应拉伸,达到整个GridView刚好铺满全屏的效果. public static void setGridViewMatchParent(GridView gr ...
- [Swift通天遁地]二、表格表单-(3)在表格中嵌套另一个表格并使Cell的高度自适应
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- Android动态设定GridView的高度,固定column,实现高度自适应
动态设定GridView的高度,固定column,根据gridview中的item个数设定高度: 调用以下方法: public static void setListViewHeightBasedOn ...
- Android 让GridView的高度为Wrap_content根据内容自适应高度
From:http://www.jayway.com/2012/10/04/how-to-make-the-height-of-a-gridview-wrap-its-content/ 如果把Grid ...
- android 之 ListView 里面嵌套 GridView 遇到的问题及其解决方法。
我们直接入主题.所有问题例子请参照下图 1,怎样使图片具有点击事件? 答: 解决方法: 在你的BaseAdapter里面不要设置下面这三个东西,然后再设置GridView的onItemClick. g ...
- iframe高度自适应
前两天在网上看到了一道面试题,问iframe高度自适应的问题.发现自己之前几乎没有关注过iframe的问题,所以在这里记录一下. 原题目是: 页面A的域名是:http://www.taobao.com ...
- 里面的div怎么撑开外面的div,让高度自适应
关于容器高度自适应的兼容性问题.1.有些时候,我们希望容器有一个固定高度,但当其中的内容多的时候,又希望高度能够自适应,也即容器在纵向能被撑开,且如果有背景,也能够自适应.在一般情况下,使用min-h ...
随机推荐
- mybatis setting配置
Mybatis配置报错元素类型为 "configuration" 的内容必须匹配 "(properties?,settings?,typeAliases?,typeHan ...
- 【编程题目】在从 1 到 n 的正数中 1 出现的次数
30.在从 1 到 n 的正数中 1 出现的次数(数组)题目:输入一个整数 n,求从 1 到 n 这 n 个整数的十进制表示中 1 出现的次数.例如输入 12,从 1 到 12 这些整数中包含 1 的 ...
- 手动关闭searchDisplayControlelr
两行代码搞定 [searchBar endEditing:YES]; [searchDisplayControllersetActive:NO];
- webstorm添加vue插件支持
现在已经有vue.js的插件啦,setting --> plugins 就可以咯 ------------------------------------------------ Mac端Web ...
- 对于大一学习计算机的新手(c/c++ )提出一些学习经验
对于刚刚上大一的新手,且是那种十分有上进的学生,在学习计算机的过程中必然会有一大堆的困惑,比如: 1 .如何学好编程(这与以往的应试教育完全不同,按照以往的那种学习方式,看书刷题不过是成为一个考试学霸 ...
- chaper3_exerise_Uva1568_Molar_Mass_分子量
#include<iostream> #include<iomanip> #include<string> #include<cctype> using ...
- Swift - 开源框架总结
苹果官方Swift文档<The Swift Programming Language> 苹果开发者Swift文档及介绍 网友整理的Swift中文文档< Apple Swift编程语言 ...
- NYOJ之字符串逆序输出
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAswAAAJaCAIAAAC0jIYTAAAgAElEQVR4nO3du27rSpbGcb+Ecz2IU+ ...
- 3.2 STL中的函数对象类模板
*: STL中有一些函数对象类模板,如下所示: 1)例如要求两个double类型的x 和y 的积,可以: multiplies<double>()(x,y); 该表达式的值就是x*y的值. ...
- python基础语法(二)
本文主要包括以下内容 函数 切片 迭代 列表生成式 生成器 迭代器 函数 定义函数 定义函数 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块 ...