ExpandableListView控件使用中一些小问题的总结

  ExpandableListView控件,很好的解决了listView无法进行折叠和分类的功能(在不进行自定义的情况)。但是它也有一些无法解决的问题,比如伸缩没有动画,前方的箭头位置不能更换,也不能更换图标等。
  单位的项目整好用到这样的一个功能,就看了一下,现在把它做一下总结。效果如图:
  这里写图片描述
  这个图是最后的效果,采用的是第三方开源的AnimatedExpandableListView控件,不用担心,它是继承ExpandableListView,添加了伸缩动画。

ExpandableListView控件在使用的时候,经常会遇到以下几个问题:
 
1、去掉父项最左侧的上下箭头或是将它移动到最右侧

2、点击父项展开子项的时候,有互斥的效果。就是一个展开,其它的就全是关闭

3、点击父项展开子项时,有相应的动画

下面我们就一一说明以上三个问题

1、去掉父项最左侧的上下箭头或是将它移动到最右侧

  这个功能,去掉父项最左侧的上下箭头,比较简单,一行代码
  

    //去掉前面一剪头
     ExpandableListView.setGroupIndicator(null);

  将它移动到最右侧,不好意思,这个没有方法,你只能自己处理,简单的方法就是去掉左侧的箭头,然后在右侧自己加图片处理。这个比较简单,只要在Adapter里的getGroupView方法添加就行
  此方法有一个变量boolean isExpanded,它就是用来判断状态的,根据不同的状态,你换一下右侧的图片就OK了,如下
  

        if (isExpanded) {
            gHolder.gnextIv.setImageResource(R.mipmap.ico_push_bot);
        }else {
            gHolder.gnextIv.setImageResource(R.mipmap.ico_next);
        }

 2、点击父项展开子项的时候,有互斥的效果。就是一个展开,其它的就全是关闭

  这个功能,只要我们重写setOnGroupExpandListener方法就OK了
  

/**
         * 各项显示互斥,就是一个展开,另外的关闭
         */
        el_list.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
            @Override
            public void onGroupExpand(int groupPosition) {
                for (int i = 0; i < mAdapter.getGroupCount(); i++) {

                    if (groupPosition != i) {
                        el_list.collapseGroup(i);
                    }
                }
            }
        });

 3、点击父项展开子项时,有相应的动画

  这个只能使用第三方控件,本身没有法子。我使用的是AnimatedExpandableListView,说到这里,我自己都在想,前面说了半天,有毛用啊。使用了第三方控件,前两个不是白说。这里强调一下,这个控件是继承自ExpandableListView的,也就是上面说的两点,在这里都同样实用。

  下载:https://github.com/idunnololz/AnimatedExpandableListView

  例子下载:http://download.csdn.net/detail/chenguang79/9759622

发布了305 篇原创文章 · 获赞 261 · 访问量 184万+

猜你喜欢

转载自blog.csdn.net/chenguang79/article/details/56479910