如何将子项动态添加到可展开的列表视图中。?
Posted
技术标签:
【中文标题】如何将子项动态添加到可展开的列表视图中。?【英文标题】:How do I add child items dynamically to an expandable listview.? 【发布时间】:2013-02-27 05:01:49 【问题描述】:例如,我有一个编辑文本和一个按钮。当按下按钮时,文本被添加到我的可扩展列表视图的第一组中,并且在其下方添加了以下每个项目。谢谢你。 (如果您需要我目前拥有的代码,请索取。)
【问题讨论】:
我被困在这里。你能分享你的代码吗? 【参考方案1】:第一个您应该创建自己的自定义适配器。 一旦创建一个这样的类。
public class ExpandableListParentClass
private Object parent;
private ArrayList<Object> parentChildren;
public ExpandableListParentClass()
public ExpandableListParentClass(Object parent, ArrayList<Object> parentChildren)
this.parent = parent;
this.parentChildren = parentChildren;
public Object getParent()
return parent;
public void setParent(Object parent)
this.parent = parent;
public ArrayList<Object> getParentChildren()
return parentChildren;
public void setParentChildren(ArrayList<Object> parentChildren)
this.parentChildren = parentChildren;
并创建您的适配器
public class ExpandableListAdapter extends BaseExpandableListAdapter implements Filterable
private LayoutInflater inflater;
private ArrayList<ExpandableListParentClass<Object>> mParent;
private View view;
public ArrayList<Object> getMParent()
return mParent;
public ExpandableListAdapter(Context context,
ArrayList<ExpandableListParentClass<Object>> parentList )
this.mParent = parentList;
this.inflater = LayoutInflater.from(context);
// counts the number of group/parent items so the list knows how many
// times calls getGroupView() method
public int getGroupCount()
return mParent.size();
// counts the number of children items so the list knows how many times
// calls getChildView() method
public int getChildrenCount(int parentPosition)
int size =0;
if(mParent.get(parentPosition).getParentChildren() != null)
size = mParent.get(parentPosition).getParentChildren().size();
return size;
// gets the title of each parent/group
public Object getGroup(int i)
return mParent.get(i).getParent();
// gets the name of each item
public Object getChild(int parentPosition, int childPosition)
return mParent.get(parentPosition).getParentChildren().get(childPosition);
public long getGroupId(int parentPosition)
return parentPosition;
public long getChildId(int i, int childPosition)
return childPosition;
public boolean hasStableIds()
return true;
// in this method you must set the text to see the parent/group on the list
public View getGroupView(int parentPosition, boolean b, View view, ViewGroup viewGroup)
if (view == null)
view = inflater.inflate(R.layout.layout_listview, viewGroup, false);
return view;
// in this method you must set the text to see the children on the list
public View getChildView(int parentPosition, int childPosition, boolean b, View view, ViewGroup viewGroup)
if (view == null)
view = inflater.inflate(R.layout.layout_listview, viewGroup, false);
// return the entire view
return view;
public boolean isChildSelectable(int i, int i1)
return true;
now fill to list
List<ExpandableListParentClass> arrayParents = new ArrayList<ExpandableListParentClass>();
ExpandableListParentClass item = new ExpandableListParentClass();
item.setParent(yourParentItem);
item.setParentChildren( yourChildList);
之后当你需要添加孩子时
ExpandableListView myExpList= (ExpandableListView) this.view.findViewById(R.id.yourExpListView);
ExpandableListAdapter adapter =
(ExpandableListAdapter) myExpList.getExpandableListAdapter();
( (ExpandableListParentClass)adapter.getMParent().get(0) ).getParentChildren().add(object);
//(change to get(0) which you parent want to get )
adapter.notifyDataSetChanged();
adapter.notifyDataSetInvalidated();
【讨论】:
向列表添加新字符串时,这段代码会立即更新列表吗? 虽然我没有完全使用您的解决方案,但您为我指明了正确的方向以上是关于如何将子项动态添加到可展开的列表视图中。?的主要内容,如果未能解决你的问题,请参考以下文章