Android 使用自定义adatper和AlertDialog的IllegalStateException
我的活动中有多个使用同一CustomAdapter的ListView。 在我的CustomAdapter中,在每个ListView上,我都在条件中向ListView的单个项添加一个图像 我只想在单击Listener(在我的CustomAdapter中)时管理图像,并显示一个自定义AlertDialog 但我只想在这个AlertDialog上绘制ArrayList的内容 我找到了第一个解决方案:以编程方式创建一个LinearLayout并用字典的ArrayList填充它 编辑:这是MyAdapter(为了让您理解,我将我的适配器变得更简单): 我读过这本书,这很正常,因为我还是个孩子,所以我无法取代他 我想用Android 使用自定义adatper和AlertDialog的IllegalStateException,android,android-alertdialog,illegalstateexception,Android,Android Alertdialog,Illegalstateexception,我的活动中有多个使用同一CustomAdapter的ListView。 在我的CustomAdapter中,在每个ListView上,我都在条件中向ListView的单个项添加一个图像 我只想在单击Listener(在我的CustomAdapter中)时管理图像,并显示一个自定义AlertDialog 但我只想在这个AlertDialog上绘制ArrayList的内容 我找到了第一个解决方案:以编程方式创建一个LinearLayout并用字典的ArrayList填充它 编辑:这是MyAdapte
alert.setAdapter
代替alert.setView
但是我不知道
编辑:问题不是来自我的持有者.ll
它工作正常,但当我再次单击它时,我出现了一个错误:
IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
这似乎是问题所在:
holder.ll.addView(holder.img);
快速修复方法是检查img
是否已经有一个父项,以及它是否删除了它:
if(holder.img.getParent() != null)
((ViewGroup) holder.img.getParent()).removeView(holder.img);
holder.ll.addView(holder.img);
哦,在我的img的OnClickListener中使用remove视图是有效的 我刚才补充说:
holder.img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(e.getParent() != null)
((ViewGroup) e.getParent()).removeView(e);
alert.show();
}
});
:)谢谢,希望它将使用自定义版面而不是editText。这是什么?holder.ll.addView(holder.img);。。ll是空的。我只是在我的布局上以编程方式设置了一个可点击的图像。我在上面的投票中给出了你的评论。我不确定这段代码是如何工作的,这可能只是问题中的一个错误。我将注意力集中在作者声称的“它(第一次)运行良好”上,并搜索出现异常的最可能原因。我的图像没有什么不好的地方,但是,正如您现在看到的,当我在alertDialog上放置EditText时,以及当我在图像上第二次单击时,我出现了相同的错误。。
if(holder.img.getParent() != null)
((ViewGroup) holder.img.getParent()).removeView(holder.img);
holder.ll.addView(holder.img);
holder.img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(e.getParent() != null)
((ViewGroup) e.getParent()).removeView(e);
alert.show();
}
});