`
liufangmeng
  • 浏览: 10484 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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的冲突上面一样可以解决。

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 16.4 KB
分享到:
评论

相关推荐

    Android开发 ExpandableListView嵌套GridView的实现

    3. **处理`GridView`的高度**:由于`GridView`的默认高度可能不适合嵌套在`ExpandableListView`中,因此我们需要在`getChildView()`中动态计算`GridView`的高度。可以遍历`GridView`的所有子项,根据子项的高度计算...

    ExpandableListView 嵌套gridView

    在实现 `ExpandableListView` 嵌套 `GridView` 的过程中,我们需要创建两个自定义视图:一个用于分组头,另一个用于分组内的子项。分组头视图可以包含自定义的文字和图片,这可以通过设置 `ExpandableListAdapter` ...

    ExpandableListView 中完美嵌套 GridView

    本文将深入探讨如何在ExpandableListView中实现完美嵌套的GridView。 首先,了解基本组件。ExpandableListView是一个可扩展的列表视图,它允许用户展开或折叠各个组(group),每个组下可以包含多个子项(child)。...

    Android开发丶ExpandableListView嵌套GridView的实现

    在`ExpandableListView`中嵌套`GridView`的实现过程主要包括以下几个步骤: 1. **创建适配器**:首先,你需要创建一个自定义的`ExpandableListAdapter`,继承自`BaseExpandableListAdapter`。这个适配器将负责填充`...

    安卓ExpandableListView嵌套Gridview嵌套用法,与多点触控图片缩放

    本篇文章将详细探讨如何在Android中实现ExpandableListView嵌套GridView,以及如何实现多点触控图片缩放的功能。 首先,ExpandableListView是一种可以展开和折叠的列表视图,用于展示层次结构的数据。它允许每个父...

    ExpandableListView嵌套GridView的混合使用

    1、ExpandableListView嵌套GridView 2、group中自定义文字和图片 原文章在 http://blog.csdn.net/u011123829/article/details/9278351

    android中ExpandableListView嵌套GridView的使用

    实现嵌套步骤 **步骤1:创建数据模型** 首先,我们需要创建数据模型,包括分组数据类(例如,`GroupItem`)和子项数据类(例如,`ChildItem`)。`GroupItem`可能包含一个`ArrayList&lt;ChildItem&gt;`来存储其下的子项...

    ExpandableListView嵌套GridView,GridView中的item带有选中功能

    在这个主题中,我们将深入探讨如何在`ExpandableListView`中嵌套`GridView`,并实现`GridView`中每个item的选中功能。 首先,我们需要创建一个`ExpandableListView`。这个控件可以用来展示分组数据,每组数据可以...

    Android ExpandableListView双层嵌套实现三级树形菜单

    在这个"Android ExpandableListView双层嵌套实现三级树形菜单"的例子中,我们将深入探讨如何通过扩展这个控件来创建一个包含三层结构的树形菜单。 首先,我们要理解ExpandableListView的基本工作原理。...

    android中ExpandableListView嵌套ListView和GridView的使用

    本文将详细讲解如何在`ExpandableListView`中嵌套`ListView`和`GridView`。 首先,理解`ExpandableListView`的基本用法。`ExpandableListView`是Android提供的一个可扩展的列表视图,它允许用户点击父项来显示或...

    ExpandableListView,recyclerview的使用

    同样,`GridView`是另一种实现网格布局的控件,但它不支持像`RecyclerView`那样高效地复用视图。 总结来说,`ExpandableListView`、`RecyclerView`和`ListView`都是Android中用于展示列表数据的重要组件,各有其...

    ExpandableListView下Item嵌套使用时间轴

    在实现`ExpandableListView`中的嵌套时间轴时,我们需要做以下几步: 1. **创建数据模型**:定义`Group`类,其中包含一组`Child`对象,每个`Child`对象代表时间轴上的一个事件。`Child`类应该包含事件的日期、描述...

    ExpandableListView(实现ListView嵌套ListView的效果)

    通过以上步骤和注意事项,开发者可以灵活地在Android应用中实现`ListView`嵌套`ListView`的效果,即`ExpandableListView`的功能。这不仅可以提高用户体验,还能有效地展示层次结构丰富的数据。在实际项目中,根据...

    Listview 嵌套gridview

    本篇文章将详细探讨如何实现ListView与GridView的嵌套,以及在实际应用中的注意事项。 首先,我们来看标题"Listview 嵌套gridview"。这意味着我们要在一个ListView的每个条目内包含一个GridView,使得每个条目都能...

    可展开列表ExpandableListView嵌套GirdView demo

    然而,如果在每个组内需要展示多列数据,单纯使用ExpandableListView可能无法满足需求,这时我们可以考虑将GridView嵌套在ExpandableListView的每个子项中,以实现更加复杂和灵活的布局。下面将详细解释如何实现“可...

    自定义ListView内嵌GridView,用ExpandableListView实现

    以上就是关于“自定义ListView内嵌GridView”和使用ExpandableListView实现多级菜单设计的相关知识点。通过理解这两种方法的工作原理和实现步骤,开发者可以根据项目需求灵活选择合适的方案,创建出功能丰富的...

    expandablelistview + gridview + 手势的新闻客户端

    "expandablelistview + gridview + 手势的新闻客户端"是一个典型的实例,它整合了三种关键元素:ExpandableListView、GridView以及手势识别。下面我们将深入探讨这些知识点。 首先,`ExpandableListView`是Android ...

    Android ScrollView嵌套ExpandableListView显示不正常的问题的解决办法

    当ScrollView嵌套ExpandableListView时,可能会遇到显示不正常的问题,比如滚动行为混乱、部分子项无法显示等。这是因为两者都是可滚动的视图,同时使用可能导致冲突。 解决这个问题的一种方法是自定义一个...

Global site tag (gtag.js) - Google Analytics