2013-05-09 62 views
0

我正在使用ScrollView來顯示用戶添加到他的購物車中的所有產品。 我創建了一個滾動視圖,並在其中創建了一個線性佈局「實習生」。 然後,我建立循環中的每一行。 這裏的XMLAndroid ScrollView似乎無法識別其直接子

<ScrollView 
    android:id="@+id/scroll" 
    android:layout_width="300dp" 
    android:layout_height="230dp" 
    android:layout_marginLeft="10dp" > 

    <LinearLayout 
     android:id="@+id/intern" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"></LinearLayout> 
</ScrollView> 

這是Java代碼。

for(Carrello cns : carrello){ 

      LinearLayout prodotto = new LinearLayout(context); 
      LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(/**/LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
      prodotto.setLayoutParams(lp); 
      //Product name 
      TextView nome_p = new TextView(context); 
      nome_p.setWidth(dpToPx(115)); 
      nome_p.setTextColor(getResources().getColor(R.color.grey)); 
      nome_p.setText(cns.getNomeProdotto()); /**/ 
      //Counts 
      TextView quantita = new TextView(context); 
      quantita.setWidth(dpToPx(80)); 
      quantita.setGravity(Gravity.CENTER); 
      quantita.setTextColor(getResources().getColor(R.color.grey)); 
      quantita.setTextAppearance(context, R.style.quantita); 
      quantita.setText(cns.getQuantita()); 
      //Price 
      TextView prezzo = new TextView(context); 
      prezzo.setWidth(dpToPx(70)); 
      prezzo.setPadding(dpToPx(5), 0, 0, 0); 
      prezzo.setTextColor(getResources().getColor(R.color.grey)); 
      prezzo.setTextAppearance(context, R.style.prezzo); 
      prezzo.setText("€"+cns.getCosto()); 
      //Cancella 
      Button canc = new Button(context); 
      LinearLayout.LayoutParams lp_btn = new LinearLayout.LayoutParams(/*LinearLayout.LayoutParams.WRAP_CONTENT*/40,40/*LinearLayout.LayoutParams.WRAP_CONTENT*/); 
      lp_btn.setMargins(0, dpToPx(10), 0, 0); 
      canc.setLayoutParams(lp_btn); 
      canc.setBackground(getResources().getDrawable(R.drawable.btn_canc)); 
      canc.setId(Integer.parseInt(cns.getIDprodotto()));/**/ 
      Log.d("ID-CANC",String.valueOf(canc.getId())); 
      //create the line 
      prodotto.addView(nome_p); 
      prodotto.addView(quantita); 
      prodotto.addView(prezzo); 
      prodotto.addView(canc); 
      intern.addView(prodotto); 
      i++; 
}//end for 

然後,添加intern滾動視圖:

scroll.addView(intern); 

但是當我運行模擬器,logcat的說,「滾動型只能承載一個直接子」,和應用程序崩潰。

+0

滾動視圖可以只有一個佈局作爲直接的孩子!你所要做的就是聲明你想要的任何佈局,就像你有一個實習生的佈局,並將你的觀點添加到那個ViewGroup中。 – Manoj 2013-05-09 09:37:31

回答

2

不要使用scroll.addView(intern);

,因爲你已經定義,滾動型的孩子在你的layout.xml

而是嘗試如下。

LinearLayout intern = (LinearLayout) findViewById(R.id.intern); 

然後用你的for循環中intern

也就是說,S它添加視圖...

不需要調用addview用於滾動

希望這有助於

+0

你是對的,現在它工作。謝謝! – MikeKeepsOnShine 2013-05-09 12:22:36

1

ScrollView已經在佈局文件中定義了一個子項。 scroll.addView(intern);將導致錯誤。

只需在循環前添加 scroll=(ScrollView) findViewById(R.id.intern)並刪除scroll.addView(intern);即可。