Android中ExpandableListView的用法实例

本文实例讲述了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));

希望本文所述对大家的Android程序设计有所帮助。