Android 具有动态添加子行功能的自定义可扩展列表

Android 具有动态添加子行功能的自定义可扩展列表,android,expandablelistview,android-custom-view,Android,Expandablelistview,Android Custom View,我有我在这里发布的屏幕。在此屏幕中,有一个可展开的列表视图,其中包含子项,在0位置有“添加”按钮以添加新的子项。当我再次单击子项时,视图必须可见,并且我可以在“添加字段”按钮上为其添加子项。请告诉我怎么做,或者如果您曾经这样做过,请发布代码片段。我认为这是一个多级可扩展的listview,您可以通过在运行时添加视图并使用do set标记和get标记来获得可见的子项,例如在可见中 private void generateList(final ArrayList<Beanclass>

我有我在这里发布的屏幕。在此屏幕中,有一个可展开的列表视图,其中包含子项,在0位置有“添加”按钮以添加新的子项。当我再次单击子项时,视图必须可见,并且我可以在“添加字段”按钮上为其添加子项。请告诉我怎么做,或者如果您曾经这样做过,请发布代码片段。

我认为这是一个多级可扩展的listview,您可以通过在运行时添加视图并使用do set标记和get标记来获得可见的子项,例如在可见中

private void generateList(final ArrayList<Beanclass> arrayList)
    {
        View view = null;
        ViewHolder viewHolder;

        try
        {
            llContainerremoveAllViews();

            if (arrayList != null && arrayList.size() > 0)
            {
                for (int i = 0; i < arrayList.size(); i++)
                {
                    view = LayoutInflater.from(MainActivity.this).inflate(R.layout.header_row, null, false);
                    viewHolder = new ViewHolder();

                    viewHolder.rlHeader = (RelativeLayout) view.findViewById(R.id.rlHeader);
                    viewHolder.imgUser = (ImageView) view.findViewById(R.id.imgUser);
                    viewHolder.txtName = (TextView) view.findViewById(R.id.txtName);
                    viewHolder.txtAddress = (TextView) view.findViewById(R.id.txtAddress);
                    viewHolder.llContainerChild = (LinearLayout) view.findViewById(R.id.llContainerChild);
                    view.setTag(viewHolder);

                    viewHolder.txtName.setText(arrayList.get(i).name);
                    viewHolder.txtAddress.setText(arrayList.get(i).business_address);

                    String imgUrl = arrayList.get(i).user_img_url;
                    if (imgUrl != null && !imgUrl.equalsIgnoreCase(""))
                    {
                        Picasso.with(MainAcitivity.this).load(imgUrl).into(viewHolder.imgUser);
                        viewHolder.imgUser.setScaleType(ScaleType.FIT_XY);
                    }

                    generateListChild(viewHolder.llContainerChild, arrayList.get(i).arrayListUser, arrayList.get(i).id);

                    ViewHolderChild holderChild = new ViewHolderChild();
                    holderChild.llContainerChildView = viewHolder.llContainerChild;

                    arrayListViewHolderChilds.add(i, holderChild);

                    viewHolder.rlHeaderCurrentBooking.setTag(i);
                    viewHolder.rlHeaderCurrentBooking.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v)
                        {
                            int pos = (Integer) v.getTag();

                            for (int j = 0; j < arrayList.size(); j++)
                            {
                                if (j == pos)
                                {
                                    if (arrayList.get(j).expand_Flag == false)
                                    {
                                        arrayListViewHolderChilds.get(j).llContainerChildView.setVisibility(View.VISIBLE);
                                        arrayList.get(j).expand_Flag = true;
                                    }
                                    else if (arrayList.get(j).expand_Flag == true)
                                    {
                                        arrayListViewHolderChilds.get(j).llContainerChildView.setVisibility(View.GONE);
                                        arrayList.get(j).expand_Flag = false;
                                    }
                                }
                                else
                                {
                                    if (arrayList.get(j).expand_Flag == true)
                                    {
                                        arrayListViewHolderChilds.get(j).llContainerChildView.setVisibility(View.GONE);
                                        arrayList.get(j).expand_Flag = false;
                                    }
                                }
                            }
                        }
                    });
                    llContainerBooked.addView(view);
                }
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
            Log.error(this.getClass().getSimpleName(), e);
            Log.debug(this.getClass().getSimpleName(), e + "");
        }
    }
private void generateList(最终ArrayList ArrayList)
{
视图=空;
持票人持票人;
尝试
{
llContainerremoveAllViews();
if(arrayList!=null&&arrayList.size()>0)
{
对于(int i=0;i
我认为它是一个多级可扩展的listview,您可以通过在运行时添加视图来实现,并使用do set标记和get标记使子项可见,例如在可见中

private void generateList(final ArrayList<Beanclass> arrayList)
    {
        View view = null;
        ViewHolder viewHolder;

        try
        {
            llContainerremoveAllViews();

            if (arrayList != null && arrayList.size() > 0)
            {
                for (int i = 0; i < arrayList.size(); i++)
                {
                    view = LayoutInflater.from(MainActivity.this).inflate(R.layout.header_row, null, false);
                    viewHolder = new ViewHolder();

                    viewHolder.rlHeader = (RelativeLayout) view.findViewById(R.id.rlHeader);
                    viewHolder.imgUser = (ImageView) view.findViewById(R.id.imgUser);
                    viewHolder.txtName = (TextView) view.findViewById(R.id.txtName);
                    viewHolder.txtAddress = (TextView) view.findViewById(R.id.txtAddress);
                    viewHolder.llContainerChild = (LinearLayout) view.findViewById(R.id.llContainerChild);
                    view.setTag(viewHolder);

                    viewHolder.txtName.setText(arrayList.get(i).name);
                    viewHolder.txtAddress.setText(arrayList.get(i).business_address);

                    String imgUrl = arrayList.get(i).user_img_url;
                    if (imgUrl != null && !imgUrl.equalsIgnoreCase(""))
                    {
                        Picasso.with(MainAcitivity.this).load(imgUrl).into(viewHolder.imgUser);
                        viewHolder.imgUser.setScaleType(ScaleType.FIT_XY);
                    }

                    generateListChild(viewHolder.llContainerChild, arrayList.get(i).arrayListUser, arrayList.get(i).id);

                    ViewHolderChild holderChild = new ViewHolderChild();
                    holderChild.llContainerChildView = viewHolder.llContainerChild;

                    arrayListViewHolderChilds.add(i, holderChild);

                    viewHolder.rlHeaderCurrentBooking.setTag(i);
                    viewHolder.rlHeaderCurrentBooking.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v)
                        {
                            int pos = (Integer) v.getTag();

                            for (int j = 0; j < arrayList.size(); j++)
                            {
                                if (j == pos)
                                {
                                    if (arrayList.get(j).expand_Flag == false)
                                    {
                                        arrayListViewHolderChilds.get(j).llContainerChildView.setVisibility(View.VISIBLE);
                                        arrayList.get(j).expand_Flag = true;
                                    }
                                    else if (arrayList.get(j).expand_Flag == true)
                                    {
                                        arrayListViewHolderChilds.get(j).llContainerChildView.setVisibility(View.GONE);
                                        arrayList.get(j).expand_Flag = false;
                                    }
                                }
                                else
                                {
                                    if (arrayList.get(j).expand_Flag == true)
                                    {
                                        arrayListViewHolderChilds.get(j).llContainerChildView.setVisibility(View.GONE);
                                        arrayList.get(j).expand_Flag = false;
                                    }
                                }
                            }
                        }
                    });
                    llContainerBooked.addView(view);
                }
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
            Log.error(this.getClass().getSimpleName(), e);
            Log.debug(this.getClass().getSimpleName(), e + "");
        }
    }
private void generateList(最终ArrayList ArrayList)
{
视图=空;
持票人持票人;
尝试
{
llContainerremoveAllViews();
if(arrayList!=null&&arrayList.size()>0)
{
对于(int i=0;i