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

      

     

    最后实现的效果如下

     

     

     

  • 相关阅读:
    《完美应用ubuntu》之全面管理ubuntu软件源
    ubuntu下安装CAJ阅读器
    re正则表达式方法
    Xpath做数据解析
    C++异常处理
    异常处理
    指针与引用
    总结:开放透明的环境对于大数据团队的重要性
    java控制流
    3. 最小生成树
  • 原文地址:https://www.cnblogs.com/huwei0814/p/4461584.html
Copyright © 2020-2023  润新知