0

我不知道如何處理該視圖。我需要線性佈局,它需要20個以上的TextView和EditText組件。我可以在上面定義ImageView和按鈕,但我不知道如何生成其餘的組件,然後在最後放置一個按鈕。Android:以編程方式將多個視圖添加到線性佈局

它會是這個樣子:

---Button-----Button------- 

--------ImageView---------- 

TextView -------- EditText 

Item1.............[-------] 

Item2.............[-------] 

Item3.............[-------] 

Item4.............[-------] 

. 

. 

. 

------------Button------------ 

會有真的很多部件,所以我想避免了手工定義XML中的所有組件。點擊按鈕後,所有組件需要成對保存成「name」:「value」(「Item1」:「EditText value」)。我有一個項目名稱列表,用戶將爲這些項目寫入值並保存到JSON文件中。

預先感謝您。

+2

您應該使用帶有自定義適配器的ListView – FoamyGuy 2013-02-18 15:17:38

+0

謝謝。這是個好主意,但我的佈局有點問題。這些按鈕,用於文本輸入和圖像的字段佔用大量空間,所以我需要將所有內容放在ScrollView中。問題是,現在我不能把'ListView'放在'ScrollView'裏面。在XML中警告:'垂直滾動ScrollView不應該包含另一個垂直滾動小部件(ListView)' – Cristiano 2013-02-19 21:17:58

回答

0

你必須實現這樣的一個類。

public class DetailedTicketSystemView extends LinearLayout 
{ 
    static int inc = 100; 
    ArrayList<XmlScommessaInCorso> _viewData; 
    ArrayList<xmlSistemaMovimenti> _systems; 
    Context _context; 

    public DetailedTicketSystemView(Context context, int res, AttributeSet attrs, ArrayList<XmlScommessaInCorso> viewData, ArrayList<xmlSistemaMovimenti> systems) 
    { 
     super(context, attrs); 

     _context = context; 
     _viewData = viewData; 
     _systems = systems; 

     LayoutInflater.from(context).inflate(res, this, true); 
     setId(inc); 
     inc++; 

     setLayout(); 
    } 

    private void setLayout() 
    { 
     TextView textView; 
     String text; 

     for (int i = 0; i < _systems.size(); i++) 
     {  
      View quotesView = (View) LayoutInflater.from(_context).inflate(R.layout.row_ticket_detail_system_layout, null, true); 
      quotesView.setId(i); 

      // System Id 
      textView = (TextView) quotesView.findViewById(R.id.systemId); 
      text = "" + _context.getString(R.string.id_sistema) + " " + _systems.get(i).getAttributeOrVoidString(xmlSistemaMovimenti.ATTR_id) + 
        "/" + _viewData.size(); 
      textView.setText(text); 

      // System Columns 
      textView = (TextView) quotesView.findViewById(R.id.systemColumns); 
      text = "" + _context.getString(R.string.colonne) + " " + _systems.get(i).getAttributeOrVoidString(xmlSistemaMovimenti.ATTR_n_multiple_sis); 
      textView.setText(text); 

      // System Bet Text 
      textView = (TextView) quotesView.findViewById(R.id.systemBetText); 
      textView.setText(R.string.importoPerColonna); 

      // System bet Value 
      textView = (TextView) quotesView.findViewById(R.id.systemBetValue); 
      text = "€ " + XmlScommessaInCorso.getQuotaFormattedOrVoid(_systems.get(i).getAttributeOrVoidString(xmlSistemaMovimenti.ATTR_impo_sistema)); 
      textView.setText(text); 


      LinearLayout primaryLayout = (LinearLayout) findViewById(R.id.primaryLayout); 
      primaryLayout.addView(quotesView); 
     } 
    } 
} 
+0

我不知道你是否只需要一個自定義類或一個列表視圖。 – 2013-02-18 15:36:05

+0

謝謝。我會嘗試,如果我不成功與ListView。 – Cristiano 2013-02-19 21:12:33

相關問題