Android中ExpandableListView的使用(二)

来源:互联网 发布:windows运行jar文件 编辑:程序博客网 时间:2024/04/28 22:12

最近翻看Android关于ExpandableListView的文档,发现了几个很有用的方法,在上一篇文章中没有提及,所以新开了一篇文章来补充一下。

首先是接口部分


除了可以设置子类被点击的监听器外,还可以设置父类被点击的监听器,以及一个列表展开和收起的监听器

接下来看一下具体的方法

收起某一个列表,参数为父类第几项,如果是要收起第一个列表,那么groupPos = 0. 如果这个列表已经收起了,返回值为false,表示收起失败,因为列表已经收起了。如果这个列表还没有收起,那么收起这个列表,返回值为true。

展开列表的用法和收起列表的用法一样,如果列表已经展开,返回false,如果列表还没有展开,返回true。


关于列表的展开还有一个方法


比上一个方法多了一个参数,如果把这个参数设置为true,列表展开的时候会有动画效果,该方法需在API大于等于14的时候才可以用

用于判断列表是否展开的方法


列表已展开,返回true;列表未展开,返回false


上一篇文章中已经提到了为子类的点击事件设置监听器的方法,这里讲一下为父类点击事件,列表收缩事件,列表展开事件设置监听器的方法

为父类的点击事件设置监听器

[java] view plain copy
  1. listview.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {  
  2.     @Override  
  3.     public boolean onGroupClick(ExpandableListView expandableListView, View view, int i, long l) {  
  4.         if (listview.isGroupExpanded(i)) {  
  5.             listview.collapseGroup(i);  
  6.         } else {  
  7.             listview.expandGroup(i, true);  
  8.         }  
  9.         return true;  
  10.     }  
  11. });  
上面的代码实现的效果是当父类被点击时,判断列表是否展开,如果没有展开的话就展开列表,如果列表已经展开,那么收起列表

为列表收缩事件和展开事件设置监听器

[java] view plain copy
  1. listview.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() {  
  2.     @Override  
  3.     public void onGroupCollapse(int i) {  
  4.         Toast.makeText(ExpandableListViewTestActivity.this"第" + i + "个列表收缩了", Toast.LENGTH_SHORT).show();  
  5.     }  
  6. });  
[java] view plain copy
  1. listview.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {  
  2.     @Override  
  3.     public void onGroupExpand(int i) {  
  4.         Toast.makeText(ExpandableListViewTestActivity.this"第" + i + "个列表伸展了", Toast.LENGTH_SHORT).show();  
  5.     }  
  6. });  


如果需要进入的时候列表就展开,然后不再收起,可以这样设置:

在setAdapter之后遍历每一个列表使它们展开

[java] view plain copy
  1. for (int i = 0; i < parentList.length; i++) {  
  2.      if (!listview.isGroupExpanded(i)) {  
  3.         listview.expandGroup(i);  
  4.     }  
  5. }  
然后设置父类的监听器直接返回true即可,不可以设置父类的监听器为null,那样起不到屏蔽原先系统设置的监听器的效果
[java] view plain copy
  1. listview.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {  
  2.     @Override  
  3.     public boolean onGroupClick(ExpandableListView expandableListView, View view, int i, long l) {  
  4.         return true;  
  5.     }  
  6. });  
0 0
原创粉丝点击