本文实例讲述了Android中ExpandableListView的用法,ExpandableListView是android中可以实现下拉list的一个控件,具体的实现方法如下:Eg8HTML5中文学习网 - HTML5先行者学习网
首先:在layout的xml文件中定义一个ExpandableListViewEg8HTML5中文学习网 - HTML5先行者学习网
<LinearLayout Eg8HTML5中文学习网 - HTML5先行者学习网
android:id="@+id/linearLayout" Eg8HTML5中文学习网 - HTML5先行者学习网
android:layout_width="fill_parent" Eg8HTML5中文学习网 - HTML5先行者学习网
android:layout_height="fill_parent" Eg8HTML5中文学习网 - HTML5先行者学习网
androidrientation="vertical" Eg8HTML5中文学习网 - HTML5先行者学习网
> Eg8HTML5中文学习网 - HTML5先行者学习网
Eg8HTML5中文学习网 - HTML5先行者学习网
<ExpandableListView Eg8HTML5中文学习网 - HTML5先行者学习网
android:id="@+id/expandableListView" Eg8HTML5中文学习网 - HTML5先行者学习网
android:layout_width="fill_parent" Eg8HTML5中文学习网 - HTML5先行者学习网
android:layout_height="wrap_content" Eg8HTML5中文学习网 - HTML5先行者学习网
/> Eg8HTML5中文学习网 - HTML5先行者学习网
</LinearLayout>
Eg8HTML5中文学习网 - HTML5先行者学习网定义两个List,用来存放控件中Group/Child中的StringEg8HTML5中文学习网 - HTML5先行者学习网
private List<String> groupArray; Eg8HTML5中文学习网 - HTML5先行者学习网
private List<List<String>> childArray;
Eg8HTML5中文学习网 - HTML5先行者学习网对这两个List进行初始化,并插入一些数据Eg8HTML5中文学习网 - HTML5先行者学习网
groupArray = new ArrayList<String>(); Eg8HTML5中文学习网 - HTML5先行者学习网
childArray = new ArrayList<List<String>>(); Eg8HTML5中文学习网 - HTML5先行者学习网
Eg8HTML5中文学习网 - HTML5先行者学习网
groupArray.add("第一行"); Eg8HTML5中文学习网 - HTML5先行者学习网
groupArray.add("第二行"); Eg8HTML5中文学习网 - HTML5先行者学习网
Eg8HTML5中文学习网 - HTML5先行者学习网
List<String> tempArray = new ArrayList<String>(); Eg8HTML5中文学习网 - HTML5先行者学习网
tempArray.add("第一条"); Eg8HTML5中文学习网 - HTML5先行者学习网
tempArray.add("第二条"); Eg8HTML5中文学习网 - HTML5先行者学习网
tempArray.add("第三条"); Eg8HTML5中文学习网 - HTML5先行者学习网
Eg8HTML5中文学习网 - HTML5先行者学习网
for(int index = 0; index <groupArray.size(); ++index) Eg8HTML5中文学习网 - HTML5先行者学习网
{ Eg8HTML5中文学习网 - HTML5先行者学习网
childArray.add(tempArray); Eg8HTML5中文学习网 - HTML5先行者学习网
}
Eg8HTML5中文学习网 - HTML5先行者学习网定义ExpandableListView的AdapterEg8HTML5中文学习网 - HTML5先行者学习网
//ExpandableListView的Adapter Eg8HTML5中文学习网 - HTML5先行者学习网
public class ExpandableAdapter extends BaseExpandableListAdapter Eg8HTML5中文学习网 - HTML5先行者学习网
{ Eg8HTML5中文学习网 - HTML5先行者学习网
Activity activity; Eg8HTML5中文学习网 - HTML5先行者学习网
Eg8HTML5中文学习网 - HTML5先行者学习网
public ExpandableAdapter(Activity a) Eg8HTML5中文学习网 - HTML5先行者学习网
{ Eg8HTML5中文学习网 - HTML5先行者学习网
activity = a; Eg8HTML5中文学习网 - HTML5先行者学习网
} Eg8HTML5中文学习网 - HTML5先行者学习网
public Object getChild(int groupPosition, int childPosition) Eg8HTML5中文学习网 - HTML5先行者学习网
{ Eg8HTML5中文学习网 - HTML5先行者学习网
return childArray.get(groupPosition).get(childPosition); Eg8HTML5中文学习网 - HTML5先行者学习网
} Eg8HTML5中文学习网 - HTML5先行者学习网
public long getChildId(int groupPosition, int childPosition) Eg8HTML5中文学习网 - HTML5先行者学习网
{ Eg8HTML5中文学习网 - HTML5先行者学习网
return childPosition; Eg8HTML5中文学习网 - HTML5先行者学习网
} Eg8HTML5中文学习网 - HTML5先行者学习网
public int getChildrenCount(int groupPosition) Eg8HTML5中文学习网 - HTML5先行者学习网
{ Eg8HTML5中文学习网 - HTML5先行者学习网
return childArray.get(groupPosition).size(); Eg8HTML5中文学习网 - HTML5先行者学习网
} Eg8HTML5中文学习网 - HTML5先行者学习网
public View getChildView(int groupPosition, int childPosition, Eg8HTML5中文学习网 - HTML5先行者学习网
boolean isLastChild, View convertView, ViewGroup parent) Eg8HTML5中文学习网 - HTML5先行者学习网
{ Eg8HTML5中文学习网 - HTML5先行者学习网
String string = childArray.get(groupPosition).get(childPosition); Eg8HTML5中文学习网 - HTML5先行者学习网
return getGenericView(string); Eg8HTML5中文学习网 - HTML5先行者学习网
} Eg8HTML5中文学习网 - HTML5先行者学习网
// group method stub Eg8HTML5中文学习网 - HTML5先行者学习网
public Object getGroup(int groupPosition) Eg8HTML5中文学习网 - HTML5先行者学习网
{ Eg8HTML5中文学习网 - HTML5先行者学习网
return groupArray.get(groupPosition); Eg8HTML5中文学习网 - HTML5先行者学习网
} Eg8HTML5中文学习网 - HTML5先行者学习网
public int getGroupCount() Eg8HTML5中文学习网 - HTML5先行者学习网
{ Eg8HTML5中文学习网 - HTML5先行者学习网
return groupArray.size(); Eg8HTML5中文学习网 - HTML5先行者学习网
} Eg8HTML5中文学习网 - HTML5先行者学习网
public long getGroupId(int groupPosition) Eg8HTML5中文学习网 - HTML5先行者学习网
{ Eg8HTML5中文学习网 - HTML5先行者学习网
return groupPosition; Eg8HTML5中文学习网 - HTML5先行者学习网
} Eg8HTML5中文学习网 - HTML5先行者学习网
public View getGroupView(int groupPosition, boolean isExpanded, Eg8HTML5中文学习网 - HTML5先行者学习网
View convertView, ViewGroup parent) Eg8HTML5中文学习网 - HTML5先行者学习网
{ Eg8HTML5中文学习网 - HTML5先行者学习网
String string = groupArray.get(groupPosition); Eg8HTML5中文学习网 - HTML5先行者学习网
return getGenericView(string); Eg8HTML5中文学习网 - HTML5先行者学习网
} Eg8HTML5中文学习网 - HTML5先行者学习网
// View stub to create Group/Children 's View Eg8HTML5中文学习网 - HTML5先行者学习网
public TextView getGenericView(String string) Eg8HTML5中文学习网 - HTML5先行者学习网
{ Eg8HTML5中文学习网 - HTML5先行者学习网
// Layout parameters for the ExpandableListView Eg8HTML5中文学习网 - HTML5先行者学习网
AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams( Eg8HTML5中文学习网 - HTML5先行者学习网
ViewGroup.LayoutParams.FILL_PARENT, 64); Eg8HTML5中文学习网 - HTML5先行者学习网
TextView text = new TextView(activity); Eg8HTML5中文学习网 - HTML5先行者学习网
text.setLayoutParams(layoutParams); Eg8HTML5中文学习网 - HTML5先行者学习网
// Center the text vertically Eg8HTML5中文学习网 - HTML5先行者学习网
text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT); Eg8HTML5中文学习网 - HTML5先行者学习网
// Set the text starting position Eg8HTML5中文学习网 - HTML5先行者学习网
text.setPadding(36, 0, 0, 0); Eg8HTML5中文学习网 - HTML5先行者学习网
text.setText(string); Eg8HTML5中文学习网 - HTML5先行者学习网
return text; Eg8HTML5中文学习网 - HTML5先行者学习网
} Eg8HTML5中文学习网 - HTML5先行者学习网
public boolean hasStableIds() Eg8HTML5中文学习网 - HTML5先行者学习网
{ Eg8HTML5中文学习网 - HTML5先行者学习网
return false; Eg8HTML5中文学习网 - HTML5先行者学习网
} Eg8HTML5中文学习网 - HTML5先行者学习网
public boolean isChildSelectable(int groupPosition, int childPosition) Eg8HTML5中文学习网 - HTML5先行者学习网
{ Eg8HTML5中文学习网 - HTML5先行者学习网
return true; Eg8HTML5中文学习网 - HTML5先行者学习网
} Eg8HTML5中文学习网 - HTML5先行者学习网
}
Eg8HTML5中文学习网 - HTML5先行者学习网最后,给定义好的ExpandableListView添加上AdapterEg8HTML5中文学习网 - HTML5先行者学习网
ExpandableListView expandableListView = (ExpandableListView)findViewById(R.id.expandableListView); Eg8HTML5中文学习网 - HTML5先行者学习网
expandableListView.setAdapter(new ExpandableAdapter(Main.this));
Eg8HTML5中文学习网 - HTML5先行者学习网希望本文所述对大家的Android程序设计有所帮助。Eg8HTML5中文学习网 - HTML5先行者学习网