0

Code :

 maxIndex = alItemListDetails.size();
    linItemTags = (LinearLayout) findViewById(R.id.linItemTags);
    final ImageView image = new ImageView(this);
    for (int i = 0; i < maxIndex; i++) {
        image.setLayoutParams(new android.view.ViewGroup.LayoutParams(80, 60));
        image.setMaxHeight(20);
        image.setMaxWidth(20);
        image.setTag(i);
        image.setImageResource(R.drawable.box);
        // Adds the view to the layout
        linItemTags.addView(image);
    }
    image.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Common.displayToast(ItemDetailsActivity.this, "" + image.getTag());
        }
    });

As from the above code, you can see that I have generated imageview dynamically and trying to handle click event of that Imageview.

But, It gives me errors as below :

Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
Jaimin Modi
  • 124
  • 1
  • 15

2 Answers2

2

Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

Because adding same ImageView object image more then once in linItemTags layout.

Create image object inside for loop :

for (int i = 0; i < maxIndex; i++) {
        ImageView image = new ImageView(this); //<< create here
        ....
        linItemTags.addView(image);
    }
ρяσѕρєя K
  • 132,198
  • 53
  • 198
  • 213
2
try this

maxIndex = alItemListDetails.size();
    linItemTags = (LinearLayout) findViewById(R.id.linItemTags);

    for (int i = 0; i < maxIndex; i++) {
     ImageView image = new ImageView(this);
        image.setLayoutParams(new android.view.ViewGroup.LayoutParams(80, 60));
        image.setMaxHeight(20);
        image.setMaxWidth(20);
        image.setTag(i);
        image.setImageResource(R.drawable.box);
        // Adds the view to the layout
        linItemTags.addView(image);
        image.setOnClickListener(new ImageClickLIstener(i));

    }

    class ImageClickLIstener implements OnClickListener
    {
    int position;
    ImageClickLIstener()
    {
    this.position= position;
    }

        @Override
        public void onClick(View v) {
            Common.displayToast(ItemDetailsActivity.this, "" + position);
        }
    }
Rohit Heera
  • 2,709
  • 2
  • 21
  • 31