android 开发 ExpandableListView的使用介绍

来源:互联网 发布:Javascript string 编辑:程序博客网 时间:2024/05/21 17:51

android开发过程中难免会遇见一些比较复杂的布局,二维list的使用时经常的事情,这里就介绍一种非常好用的二维ExpandableListView,主要是他的adapter的使用非常的重要,直接上代码。

  1. private class MyExpandableListViewAdapter extends BaseExpandableListAdapter {  
  2.   
  3.     //  获得某个父项的某个子项  
  4.     @Override  
  5.     public Object getChild(int parentPos, int childPos) {  
  6.         return dataset.get(parentList[parentPos]).get(childPos);  
  7.     }  
  8.   
  9.     //  获得父项的数量  
  10.     @Override  
  11.     public int getGroupCount() {  
  12.         return dataset.size();  
  13.     }  
  14.   
  15.     //  获得某个父项的子项数目  
  16.     @Override  
  17.     public int getChildrenCount(int parentPos) {  
  18.         return dataset.get(parentList[parentPos]).size();  
  19.     }  
  20.   
  21.     //  获得某个父项  
  22.     @Override  
  23.     public Object getGroup(int parentPos) {  
  24.         return dataset.get(parentList[parentPos]);  
  25.     }  
  26.   
  27.     //  获得某个父项的id  
  28.     @Override  
  29.     public long getGroupId(int parentPos) {  
  30.         return parentPos;  
  31.     }  
  32.   
  33.     //  获得某个父项的某个子项的id  
  34.     @Override  
  35.     public long getChildId(int parentPos, int childPos) {  
  36.         return childPos;  
  37.     }  
  38.   
  39.     //  按函数的名字来理解应该是是否具有稳定的id,这个方法目前一直都是返回false,没有去改动过  
  40.     @Override  
  41.     public boolean hasStableIds() {  
  42.         return false;  
  43.     }  
  44.   
  45.     //  获得父项显示的view  
  46.     @Override  
  47.     public View getGroupView(int parentPos, boolean b, View view, ViewGroup viewGroup) {  
  48.         return view;  
  49.     }  
  50.   
  51.     //  获得子项显示的view  
  52.     @Override  
  53.     public View getChildView(int parentPos, int childPos, boolean b, View view, ViewGroup viewGroup) {  
  54.         return view;  
  55.     }  
  56.   
  57.     //  子项是否可选中,如果需要设置子项的点击事件,需要返回true  
  58.     @Override  
  59.     public boolean isChildSelectable(int i, int i1) {  
  60.         return false;  
  61.     }  
  62.  }  

上面的是个方法直接对应把该实现的代码放进去

需要注意的是

1:在原来的这个布局中默认是不打开的,实现了下面这个方法就可以实现展示出来的数据就是展开后的数据,一下两个方法在一起使用就可以实现了

//覆盖原有收起展开事件convertView.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View view) {      //点击事件    }});


for (int i = 0; i < orderStoreBeanList.size(); i++) {    orderActivityExpandableListView.expandGroup(i);}

2:里面的两个重要参数,一个父类的位置,一个子类的位置

public Object getChild(int groupPosition, int childPosition)

3:去掉自带的小箭头

orderActivityExpandableListView.setGroupIndicator(null);

其他的就和平时写的adapter时候一样该怎么用就怎么用就好了,这是第一次写博客,先试一下怎么样,希望大家多多指教,如果不清楚的还可以去看原文

原创粉丝点击