2016-02-03 36 views
0

我想用listview以編程方式使用LinearLayout添加2個文字查看。 此代碼是一部分listview適配器。以編程方式使用Linearlayout添加文字查看

它有錯誤 - >指定的孩子已經有父母。您必須先調用子對象的父對象的removeView()。

如何解決?

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

    View itemView; 


    if (convertView == null) { 
     itemView = layoutInflater.inflate(R.layout.activity_delivering_partner_item, parent, false); 

     final Deliveryltem deliveryltemPosition = epicerieDelivery_delivering_recipient.selectedDeliveryItem.get(position); 

     time = (TextView) itemView.findViewById(R.id. delivering_item_time); 
     address = (TextView) itemView.findViewById(R.id.delivering_item_address); 
     name = (TextView) itemView.findViewById(R.id.delivering_item_name); 
     goods = (TextView) itemView.findViewById(R.id.delivering_item_goods); 
     partner_linear = (LinearLayout) itemView.findViewById(R.id.delivering_partner_goods_linear); 

     LayoutInflater layoutInflater = 
       (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     final View addView = layoutInflater.inflate(R.layout.activity_delivering_partner_item_row, null); 

     TextView goods_name = (TextView) addView.findViewById(R.id.partner_goods_name_row); 
     TextView goods_ea = (TextView) addView.findViewById(R.id.partner_goods_ea_row); 
     String purchase_name = deliveringListActivity.purchase_name_arr.get(deliveringListActivity.purchase_num); 


     for(int k = 0; k< deliveringListActivity.partner_goods_arr.size(); k++){ 


      if(deliveryltemPosition.delivery_order_id.equals(deliveringListActivity.partner_goods_arr.get(k).goods_order_id)){ 


       if(deliveringListActivity.partner_goods_arr.get(k).detail_purchase.equals(purchase_name)){ 

        goods_name.setText(deliveringListActivity.partner_goods_arr.get(k).detail_product_name); 
        goods_ea.setText(deliveringListActivity.partner_goods_arr.get(k).detail_ea); 

        partner_linear.addView(addView); 

       } 
      }else{ 

      } 
     } 
     time.setText(deliveryltemPosition.shipping_time); 
     address.setText(deliveryltemPosition.recipient_address); 
     name.setText(deliveryltemPosition.recipient_name); 


     return itemView; 


}else{ 
     itemView = convertView; 

     if(epicerieDelivery_delivering_recipient.selectedDeliveryItem.size() != 0){ 

      final Deliveryltem deliveryltemPosition = epicerieDelivery_delivering_recipient.selectedDeliveryItem.get(position); 

      time = (TextView) itemView.findViewById(R.id. delivering_item_time); 
      address = (TextView) itemView.findViewById(R.id.delivering_item_address); 
      name = (TextView) itemView.findViewById(R.id.delivering_item_name); 
      partner_linear = (LinearLayout) itemView.findViewById(R.id.delivering_partner_goods_linear); 
      LayoutInflater layoutInflater = 
        (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      final View addView = layoutInflater.inflate(R.layout.activity_delivering_partner_item_row, null); 

      TextView goods_name = (TextView) addView.findViewById(R.id.partner_goods_name_row); 
      TextView goods_ea = (TextView) addView.findViewById(R.id.partner_goods_ea_row); 
      time.setText(deliveryltemPosition.shipping_time); 
      address.setText(deliveryltemPosition.recipient_address); 
      name.setText(deliveryltemPosition.recipient_name); 

      String purchase_name = deliveringListActivity.purchase_name_arr.get(deliveringListActivity.purchase_num); 




      for(int k = 0; k< deliveringListActivity.partner_goods_arr.size(); k++){ 
     if(deliveryltemPosition.delivery_order_id.equals(deliveringListActivity.partner_goods_arr.get(k).goods_order_id)){ 

        if(deliveringListActivity.partner_goods_arr.get(k).detail_purchase.equals(purchase_name)){ 
         goods_name.setText(deliveringListActivity.partner_goods_arr.get(k).detail_product_name); 
         goods_ea.setText(deliveringListActivity.partner_goods_arr.get(k).detail_ea); 

         partner_linear.addView(addView); 
       } 
       }else{ 

       } 
      } 

     } 

     return convertView; 
    } 
} 

回答

1

指定的孩子已經有父母。你必須調用removeView() 孩子的父母第一

由於:

partner_linear.addView(addView); 

線。

Inside for-looppartner_linear中多次添加相同的對象View。

得到它的工作在膨脹activity_delivering_partner_item_row佈局環:

for(int k = 0; k< deliveringListActivity.partner_goods_arr.size(); k++){ 
    // inflate layout and access all Views from it here 
    final View addView = layoutInflater.inflate(
         R.layout.activity_delivering_partner_item_row, null); 
    TextView goods_name = (TextView) 
         addView.findViewById(R.id.partner_goods_name_row); 

.... your code here... 

    partner_linear.addView(addView); 
} 
+0

抱歉,但TextView中被複制......如何解決它..? –

+0

我修好了!超!謝謝! –

0

首先重要的是要知道,當你添加在Android的一個子視圖「孩子只能有1個父」這裏的TextView您添加的內容已經是xml文件中的佈局的子項,因此您無法爲該子項設置另一個父項。替代使用FindViewById()嘗試通過爲TextView類創建對象並使用LayoutParams爲這些textView設置參數來動態添加TextView。

0

您正在一次又一次向parent_linear添加相同的視圖。 您需要創建在for循環iteratate一個新的觀點,每次

for(int k = 0; k< deliveringListActivity.partner_goods_arr.size(); k++){ 
    // inflate layout and access all Views from it here 
    final View addView = layoutInflater.inflate(
         R.layout.activity_delivering_partner_item_row, null); 
    TextView goods_name = (TextView) 
         addView.findViewById(R.id.partner_goods_name_row); 

.... your code here... 

    partner_linear.addView(addView); 
} 
相關問題