2011-11-17 132 views
1

嗨,我把自定義佈局安卓'GalleryView'我有我的getview()方法中的以下代碼。 但它給予異常指定的孩子已經有一個父母。你必須調用removeView()請幫助。Android中的自定義佈局

public View getView(int position, View convertView, ViewGroup parent) { 

     LinearLayout ll = new LinearLayout(mContext); 
      ll.setId(position*9); 
      ll.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 
      int padding = (int) Math.round(2.5*density); 


      ll.setPadding(padding, padding, padding, padding); 

      ImageView iv = new ImageView(mContext); 
      iv= chanelViewArrayList.get(position).snapshotImageView; 
      iv.setLayoutParams(new LayoutParams(Math.round(100*density),Math.round(100*density))); 
      iv.setId(position); 


      ll.removeAllViews(); 
      ll.addView(iv); 
     return ll; 
    } 

回答

1
iv= chanelViewArrayList.get(position).snapshotImageView; 

是同爲一個以上的位置。您無法添加已添加到某處的視圖。 確保此方法爲每個孩子返回新的視圖。

如果可能,粘貼代碼。

+0

**位置**是getView()方法的參數。所以不同的觀點來了不同的項目,我是對的嗎? –

+0

例如一旦position = 1,它的視圖被添加,但是當再次getview將被調用position = 1時,會給出錯誤。所以不要將它們存儲在其他地方並添加到linealLayout中,以便創建它們dinamicaaly。從xml充氣的最佳選擇 –

+0

我的應用程序正在異步下載圖像。所以我將它分配給ImageView,即下載完成後,ImageView將變得可見。因此,任何想法跳過錯誤。請幫助 –