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