• 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;
        }
    

      

     

    最后实现的效果如下

     

     

     

  • 相关阅读:
    根据模板自动生成数据
    CSV to XLSX (专用)
    释放用完的Excel COM组件
    配置文件的力量
    字符编解码的故事(ASCII,ANSI,Unicode,Utf-8区别)
    将结果中的省略号内容全部输出
    Powershell变量的类型
    一些用过的C#类库收集
    运算符
    特殊运算符
  • 原文地址:https://www.cnblogs.com/huwei0814/p/4461584.html
Copyright © 2020-2023  润新知