如何将子项动态地添加到可展开的列表视图中



例如,我有一个编辑文本和一个按钮。当按下按钮时,文本被添加到我的可扩展列表视图的第一组中,并在其下方添加以下每个项。谢谢你!(如果你需要我到目前为止的代码,请要求)

首先,您应该创建自己的自定义适配器。一旦像这样创建一个类。

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();

最新更新