我已经动态创建了一个ImageView
,如下图所示。它工作正常。现在,我想在单击顶部十字ImageView
时删除视图。当我单击时,它崩溃了。请帮助实现它。
这是我所做的
private void postImage(List<Uri> urilist) {
for(int i=0; i< urilist.size(); i++) {
imgView = new ImageView(getActivity());
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(150, 150);
lp.setMargins(20,10,20,10);
imgView.setLayoutParams(lp);
imgView.setId(i);
Log.d("uri list in loop",""+urilist.get(0));
Glide.with(getActivity())
.load(urilist.get(i))
.into(imgView);
layout.addView(imgView);
imgView1 = new ImageView(getActivity());
LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams(50, 50);
lp1.setMargins(0,5,1,80);
imgView1.setLayoutParams(lp1);
imgView1.setId(i);
Log.d("uri list in loop",""+urilist.get(0));
Glide.with(getActivity())
.load(R.drawable.ic_action_cross)
.into(imgView1);
layout.addView(imgView1);
}
imgView1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
layout.removeViewAt(v.getId());
}
});
}
答案 0 :(得分:0)
我的意思是@shakac,您可以这样尝试;
for(int i = 0; i<layout.getChildCount(); i++)
{
if (layout.getChildAt(i).getId() == v.getId()){
layout.removeView(layout.getChildAt(i));
break;
}
}
但是正如我在评论中说的那样,您将删除十字按钮。
答案 1 :(得分:0)
如果是由于索引(肯定会在删除第二项时崩溃),那么您可以在下面尝试
imgView1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ViewGroup parentView = (ViewGroup) v.getParent();
parentView.removeView(v);
}
});
注意:您不应将两个视图的ID设置为相同。而是使用一些数学公式。