很早之前做过一个商城的app 也是第一次做安卓。
实现的效果如下:

 
因为一开始做安卓,很多写的代码都不规范,在下面上代码的地方,还请高手指点(勿喷,楼主是自尊心很强的屌丝)
 
这个效果要解决2个大问题,
第一个是ExpandableListView 如何放置gridview  ,这个比较好做 思路就是adapter里实现
第二个是在ExpandableListView里面展开后,GirdView如何能充满ExpandableListView的item, 就是楼上的效果
 
好,先来解决第一个。如何放置gridview,
在这里使用的adapter 是BaseExpandableListAdapter  并且实现点击girdview里面item的事件
-     class madapter extends BaseExpandableListAdapter implements OnItemClickListener {  
-   
-         @Override  
-         public int getGroupCount() {  
-             
-             return alllist.size();  
-         }  
-   
-         @Override  
-         public int getChildrenCount(int groupPosition) {  
-             return 1;  
-         }  
-   
-         @Override  
-         public Object getGroup(int groupPosition) {  
-             
-             return alllist.get(groupPosition).parentnode;  
-         }  
-   
-         @Override  
-         public Object getChild(int groupPosition, int childPosition) {  
-             
-             return null;  
-         }  
-   
-         @Override  
-         public long getGroupId(int groupPosition) {  
-             
-             return groupPosition;  
-         }  
-   
-         @Override  
-         public long getChildId(int groupPosition, int childPosition) {  
-             
-             return childPosition;  
-         }  
-   
-         @Override  
-         public boolean hasStableIds() {  
-             
-             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); 
-             grid  = (ShowAllShopsType_list_grid) item.findViewById(R.id.shopstypegridview);
-             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) {  
-             
-             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());  
-             
-             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实现高度自适应
原文:http://www.cnblogs.com/wangfeng520/p/5728333.html