2015-12-16 59 views
0

代碼:處理手法的ImageView這是事件動態添加

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

從上面的代碼中,你可以看到,我已動態生成的ImageView並試圖處理單擊ImageView的事件。

但是,它給我的錯誤如下:

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

你想創建圖像的列表? –

+0

@vipinagrahari是 –

+0

使用RecyclerView和ViewHolder會是一個更好的選擇。 –

回答

2

致:java.lang.IllegalStateException:指定的子 已經有母。您必須先調用孩子父母 上的removeView()。

由於linItemTags佈局添加相同ImageView對象image更多然後一次。

在for循環中創建image對象:

for (int i = 0; i < maxIndex; i++) { 
     ImageView image = new ImageView(this); //<< create here 
     .... 
     linItemTags.addView(image); 
    } 
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); 
     } 
    } 
相關問題