如何从另一个按钮onclick删除动态创建的imageview?

时间:2019-02-26 13:49:08

标签: java android

我已经动态创建了一个ImageView,如下图所示。它工作正常。现在,我想在单击顶部十字ImageView时删除视图。当我单击时,它崩溃了。请帮助实现它。 enter image description here

这是我所做的

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



}

2 个答案:

答案 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设置为相同。而是使用一些数学公式。