我想实现一个可扩展的ImageListView。
_exlist=getExpandableListView();
final String NAME = "name";
final String IMAGE = "image";
final LayoutInflater layoutInflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final ArrayList<HashMap<String, String>> headerData = new ArrayList<HashMap<String, String>>();
final HashMap<String, String> group1 = new HashMap<String, String>();
group1.put(NAME, "Group 1");
headerData.add( group1 );
final HashMap<String, String> group2 = new HashMap<String, String>();
group2.put(NAME, "Group 2");
headerData.add( group2);
final ArrayList<ArrayList<HashMap<String, Object>>> childData = new ArrayList<ArrayList<HashMap<String, Object>>>();
final ArrayList<HashMap<String, Object>> group1data = new ArrayList<HashMap<String, Object>>();
childData.add(group1data);
final ArrayList<HashMap<String, Object>> group2data = new ArrayList<HashMap<String, Object>>();
childData.add(group2data);
// Set up some sample data in both groups
for( int i=0; i<10; ++i) {
final HashMap<String, Object> map = new HashMap<String,Object>();
map.put(NAME, "Child " + i );
map.put(IMAGE, getResources().getDrawable(R.drawable.icon));
( i%2==0 ? group1data : group2data ).add(map);
}
setListAdapter( new SimpleExpandableListAdapter(
this,
headerData,
android.R.layout.simple_expandable_list_item_1,
new String[] { NAME }, // the name of the field data
new int[] { android.R.id.text1 }, // the text field to populate with the field data
childData,
0,
null,
new int[] {}
) {
@Override
public ViewGroup getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
final ViewGroup v = (ViewGroup) super.getChildView(groupPosition, childPosition, isLastChild, convertView, parent);
// Populate your custom view here
((TextView)v.findViewById(R.id.name)).setText( (String) ((Map<String,Object>)getChild(groupPosition, childPosition)).get(NAME) );
((ImageView)v.findViewById(R.id.image)).setImageDrawable( (Drawable) ((Map<String,Object>)getChild(groupPosition, childPosition)).get(IMAGE) );
return v;
}
@Override
public ViewGroup newChildView(boolean isLastChild, ViewGroup parent) {
return (ViewGroup) layoutInflater.inflate(R.layout.list, null, false);
}
}
);
然后我的问题是如何在父母列表中添加图像和文本。
答案 0 :(得分:2)
您可以覆盖
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parentView)
SimpleExpandableListAdapter
的方法,以及(如果需要)newGroupView
方法,并在执行子视图时操作组视图。
示例here使用BaseExpandableListAdapter
扩展名来填充展开式列表视图,但所提到的方法对两者都很常见。