我在android中有一个对象列表。我想迭代列表并创建一个可扩展的列表视图,每个对象有一个条目。我已经在xml文件中创建了ExpandableListView
。所以我知道我开始:
ExpandableListView results = ((ExpandableListView)rootView.findViewById(R.id.results));
我想查看对象列表并为每个对象创建一个Parent
,每个Child
将是主对象的实例变量。
例如:
Parent = Object.Title
Child1 = Object.Taste
Child2 = Object.smell
Parent1 = Object1.Title
Child1 = Object1.Taste
Child2 = Object1.smell
答案 0 :(得分:4)
您需要创建扩展BaseExpandableListAdapter
的适配器,它将管理子视图和父视图。有关详细信息,请参阅this。
答案 1 :(得分:2)
您必须使用BaseExpandableListAdapter
扩展适配器并覆盖它的方法。
这是一个很好的例子
http://theopentutorials.com/tutorials/android/listview/android-expandable-list-view-example/
答案 2 :(得分:0)
使用BaseExpandableListAdapter和ovverride getChildView(...)以及getGroupView(...)扩展自定义适配器,如下所示:
public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
tempChild = (ArrayList<String>) Childtem.get(groupPosition);
TextView text = null;
if (convertView == null) {
convertView = minflater.inflate(R.layout.childrow, null);
}
text = (TextView) convertView.findViewById(R.id.textView1);
text.setText(tempChild.get(childPosition));
convertView.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Toast.makeText(activity, tempChild.get(childPosition), Toast.LENGTH_SHORT).show();
}
});
return convertView;
}
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = minflater.inflate(R.layout.grouprow, null);
}
((CheckedTextView) convertView).setText(groupItem.get(groupPosition));
((CheckedTextView) convertView).setChecked(isExpanded);
return convertView;
}
请参阅完整示例源代码here