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的冲突上面一样可以解决。
转载于:https://www.cnblogs.com/wangfeng520/p/5728333.html
ExpandableListView 里面嵌套GridView实现高度自适应相关推荐
- html宽度自适应怎么调整li超出隐藏,HTML篇之CSS样式——div ul li 嵌套后解决高度自适应方法...
方法一: div 自适应宽度 很简单 ,你应该设置div的display:inline-block 然后不要设置宽度就行了 方法二: div ul li 嵌套后解决高度自适应办法: html代码如下 ...
- flex 嵌套 之 高度自适应
<!DOCTYPE html> <html><head><meta charset="UTF-8"><title>fle ...
- android gridview设置高度,android设置GridView高度自适应,实现全屏铺满效果
使GridView每个item的高度自适应拉伸,达到整个GridView刚好铺满全屏的效果. public static void setGridViewMatchParent(GridView gr ...
- android listView嵌套gridview的使用心得
在开发的过程中可能需要用到listview嵌套gridview的场景,但是在Android中, 不能在一个拥有Scrollbar的组件中嵌入另一个拥有Scrollbar的组件,因为这不科学,会混淆滑动 ...
- f2 自适应_典型的三行二列居中高度自适应布局
如何使整个页面内容居中,如何使高度适应内容自动伸缩.这是学习CSS布局最常见的问题.下面就给出一个实际的例子,并详细解释.(本文的经验和是蓝色理想论坛xpoint.guoshuang共同讨论得出的.) ...
- Iframe高度自适应(兼容IE/Firefox、同域/跨域)
在实际的项目进行中,很多地方可能由于历史原因不得不去使用iframe,包括目前正火热的应用开发也是如此. 随之而来的就是在实际使用iframe中,会遇到iframe高度的问题,由于被嵌套的页面长度不固 ...
- android 之 ListView 里面嵌套 GridView 遇到的问题及其解决方法。
我们直接入主题.所有问题例子请参照下图 1,怎样使图片具有点击事件? 答: 解决方法: 在你的BaseAdapter里面不要设置下面这三个东西,然后再设置GridView的onItemClick. g ...
- Iframe高度自适应(兼容IEFirefox、同域跨域)
在实际的项目进行中,很多地方可能由于历史原因不得不去使用iframe,包括目前正火热的应用开发也是如此. 随之而来的就是在实际使用iframe中,会遇到iframe高度的问题,由于被嵌套的页面长度不固 ...
- 跨域iframe高度自适应(兼容IE/FF/OP/Chrome)
采用JavaScript来控制iframe元素的高度是iframe高度自适应的关键,同时由于JavaScript对不同域名下权限的控制,引发出同域.跨域两种情况. 由于客户端js使用浏览器的同源安全策 ...
最新文章
- 巧用伪元素和伪类让我们的html结构更清晰合理
- Python 技术点
- I.MX6 Android 5.1 回到 Android 4.2 emmc 启动
- 搜索推荐系统实战:进化篇
- python 反射实体,动态应用
- (王道408考研数据结构)第八章排序-第五节:归并排序
- SpringCloud工作笔记047---FastJson解析多级JSON_FastJson解析嵌套JSON_FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换
- gradle 替换java类_Gradle字符串替换
- linux内核提高系统实时性,Linux操作系统实时性分析及改进策略
- SQL入门经典 第一章
- python怎么通过手机号定位_基于Python的免费手机号码归属地查询
- 还在烦恼没有项目?手把手带你从 0 开始用 React 重写学成在线 II
- android 极光IM集成及使用
- lisp线段两端同时缩短的命令_cad中有没有办法同时对多条线段偏移?
- 爬取分析雪球网实盘用户数据
- 绍兴市越城区人大常委会主任徐荻一行莅临迪捷软件调研指导
- python爬取学校题库_Python爬虫实战-获取某网站题库
- ubuntu服务器mysql等常用配置命令
- pycocotools报错 if type(resFile) == str or type(resFile) == unicode: NameError: name ‘unicode‘ is
- kingcms常用标记
热门文章
- 执行transact mysql_创建数据库失败((Microsoft.SqlServer.Smo))执行Transact-SQL
- tp3.2.3实现后台的顶部栏目查询,不用拼接sql
- 关于php的cgi,php-fpm的关系
- 【机器学习入门到精通系列】多变量线性回归(附详细代码)
- python【力扣LeetCode算法题库】104-二叉树的最大深度
- 和 对比_家用保温杯小对比
- java 连续运算_JS连续运算
- 网站权重的提升更需要得到重视
- 浅析如何让网站建设更具新颖?
- 樊登读书赋能读后感_文化赋能,助力终端 | 第五届齐心办公节携手樊登读书点亮办公生活...