您的位置:首页 > 移动开发 > Android开发

Android中ExpandableListView的使用

2012-08-09 22:39 405 查看
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 ));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: