Android中ExpandableListView的使用

ExpandableListView是android中可以实现下拉list的一个控件,具体的实现方法如下:

首先:在layout的xml文件中定义一个ExpandableListView

< LinearLayout     
    android:id ="@+id/linearLayout"    
    android:layout_width ="fill_parent"     
    android:layout_height ="fill_parent"    
    androidrientation ="vertical"    
    >    
       
    < ExpandableListView    
    android:id ="@+id/expandableListView"    
    android:layout_width ="fill_parent"    
    android:layout_height ="wrap_content"    
        />    
</ LinearLayout >  

定义两个List,用来存放控件中Group/Child中的String

private  List<String> groupArray;   
private  List<List<String>> childArray;  

对这两个List进行初始化,并插入一些数据

groupArray = new  ArrayList<String>();   
childArray = new  ArrayList<List<String>>();   
   
groupArray.add("第一行" );   
groupArray.add("第二行" );   
   
List<String> tempArray = new  ArrayList<String>();   
tempArray.add("第一条" );   
tempArray.add("第二条" );   
tempArray.add("第三条" );   
   
for (int  index = 0 ; index <groupArray.size(); ++index)   
{   
    childArray.add(tempArray);   
}   

定义ExpandableListView的Adapter

//ExpandableListView的Adapter    
public  class  ExpandableAdapter extends  BaseExpandableListAdapter   
{   
    Activity activity;   
       
    public  ExpandableAdapter(Activity a)   
    {   
        activity = a;   
    }   
    public  Object getChild(int  groupPosition, int  childPosition)   
    {   
        return  childArray.get(groupPosition).get(childPosition);   
    }   
    public  long  getChildId(int  groupPosition, int  childPosition)   
    {   
        return  childPosition;   
    }   
    public  int  getChildrenCount(int  groupPosition)   
    {   
        return  childArray.get(groupPosition).size();   
    }   
    public  View getChildView(int  groupPosition, int  childPosition,   
            boolean  isLastChild, View convertView, ViewGroup parent)   
    {   
        String string = childArray.get(groupPosition).get(childPosition);   
        return  getGenericView(string);   
    }   
    // group method stub    
    public  Object getGroup(int  groupPosition)   
    {   
        return  groupArray.get(groupPosition);   
    }   
    public  int  getGroupCount()   
    {   
        return  groupArray.size();   
    }   
    public  long  getGroupId(int  groupPosition)   
    {   
        return  groupPosition;   
    }   
    public  View getGroupView(int  groupPosition, boolean  isExpanded,   
            View convertView, ViewGroup parent)   
    {   
        String string = groupArray.get(groupPosition);   
        return  getGenericView(string);   
    }   
    // View stub to create Group/Children 's View    
    public  TextView getGenericView(String string)   
    {   
        // Layout parameters for the ExpandableListView    
        AbsListView.LayoutParams layoutParams = new  AbsListView.LayoutParams(   
                ViewGroup.LayoutParams.FILL_PARENT, 64 );   
        TextView text = new  TextView(activity);   
        text.setLayoutParams(layoutParams);   
        // Center the text vertically    
        text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);   
        // Set the text starting position    
        text.setPadding(36 , 0 , 0 , 0 );   
        text.setText(string);   
        return  text;   
    }   
    public  boolean  hasStableIds()   
    {   
        return  false ;   
    }   
    public  boolean  isChildSelectable(int  groupPosition, int  childPosition)   
    {   
        return  true ;   
    }   
}   

最后,给定义好的ExpandableListView添加上Adapter

ExpandableListView expandableListView = (ExpandableListView)findViewById(R.id.expandableListView);   
expandableListView.setAdapter(new  ExpandableAdapter(Main.this ));   
原文地址:https://www.cnblogs.com/xuewater/p/2631017.html