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

相关问题