Android ExpandbleView源码学习:ExpandableListView使用


首先需要在layout下的某个xml文件中申明ExpandableView节点

  1. <ExpandableListView Android:id="@+id/ExpandableListView_Section"  
  2.         android:layout_width="fill_parent" android:layout_height="wrap_content"  
  3.         android:clickable="false" android:divider="#FFCECFCE"  
  4.         android:dividerHeight="1.0dp" android:fadingEdge="vertical"  
  5.         android:background="#FFFFFFFF" android:childDivider="#FFCECFCE"  
  6.         android:cacheColorHint="#00000000">  
  7.     </ExpandableListView>  
然后在代码中取到该view
  1. expLV = (ExpandableListView) mLayout.findViewById(R.id.ExpandableListView_Section);  
然后设置他的adapter
  1. expLV.setAdapter(adapter);  
这样就可以了。

adapter是一个继承BaseExpandableListAdapter的类。需要实现如下方法

  1. /**扩展baseExpandableAdapter用于展示二级列表使用*/  
  2.     public class MyExpandableListAdapter extends BaseExpandableListAdapter{  
  3.         private LayoutInflater mInflater;  
  4.         private List<KnowledgeCatalogInfo> KnowledgeCatalogInfos;  
  5.           
  6.         public MyExpandableListAdapter(Context context , List<KnowledgeCatalogInfo> KnowledgeCatalogInfos){  
  7.             this.mInflater = LayoutInflater.from(context);  
  8.             this.KnowledgeCatalogInfos = KnowledgeCatalogInfos;  
  9.         }  
  10.           
  11.         public MyExpandableListAdapter(Context context){  
  12.             this.mInflater = LayoutInflater.from(context);  
  13.         }  
  14.           
  15.           
  16.         @Override  
  17.         public int getGroupCount() {  
  18.         }  
  19.   
  20.         @Override  
  21.         public int getChildrenCount(int groupPosition) {  
  22.         }  
  23.   
  24.         @Override  
  25.         public Object getGroup(int groupPosition) {  
  26.             return this.KnowledgeCatalogInfos.get(groupPosition);  
  27.         }  
  28.   
  29.         @Override  
  30.         public Object getChild(int groupPosition, int childPosition) {  
  31.             return null;  
  32.         }  
  33.   
  34.         @Override  
  35.         public long getGroupId(int groupPosition) {  
  36.             return groupPosition;  
  37.         }  
  38.   
  39.         @Override  
  40.         public long getChildId(int groupPosition, int childPosition) {            
  41.             return childPosition;  
  42.         }  
  43.   
  44.         @Override  
  45.         public boolean hasStableIds() {  
  46.             return true;  
  47.         }  
  48.   
  49.         @Override  
  50.         public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {  
  51.             return view;  
  52.         }  
  53.   
  54.         @Override  
  55.         public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {  
  56.             return view;  
  57.         }  
  58.   
  59.         @Override  
  60.         public boolean isChildSelectable(int groupPosition, int childPosition) {  
  61.             return true;  
  62.         }  
  63.         /** 
  64.          * 获得展示的VIEW 
  65.          * @return 
  66.         */   
  67.         public View getGenericView(){  
  68.             View view = this.mInflater.inflate(R.layout.practise_section_group_item_layout, null);  
  69.             return view;  
  70.         }  
  71.     }  

相关内容