机器人在tableRows创建textViews编程

问题描述:

我有相同数量的元素,这三个名单机器人在tableRows创建textViews编程

List<String>competitoinsIDs = new LinkedList<String>(); 
List<String>marks = new LinkedList<String>(); 
List<String>numOfQuestions = new LinkedList<String>(); 

我希望把每个列表的第一个元素在tablerow的,然后在另一个每个列表的第二个元素tablerow的,你会帮我请,这是XML

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TableLayout 
     android:id="@+id/tlMarksTable" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 

     <TableRow 
      android:id="@+id/tableRow1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:padding="5dip" 
      android:weightSum="2" > 

      <TextView 
       android:id="@+id/tvMarksCompetitionID" 
       android:layout_weight="1" 
       android:text="Competition" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <TextView 
       android:id="@+id/tvMarksMarks" 
       android:layout_weight="1" 
       android:text="Marks" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <TextView 
       android:id="@+id/tvMarksQuestionsNum" 
       android:layout_weight="1" 
       android:text="Questions" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 
     </TableRow> 
    </TableLayout> 

</FrameLayout> 

首先改变你的XML文件:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TableLayout 
     android:id="@+id/tlMarksTable" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 

    </TableLayout> 
    </FrameLayout> 

我们会动态添加的所有内容。

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    List<String>competitoinsIDs = new LinkedList<String>(); 
    List<String>marks = new LinkedList<String>(); 
    List<String>numOfQuestions = new LinkedList<String>(); 

//make sure that the lists contain data or else display will be blank screen 

    TableRow.LayoutParams params1=new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,1.0f); 
    TableRow.LayoutParams params2=new TableRow.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT); 
    TableLayout tbl=(TableLayout) findViewById(R.id.tlMarksTable); 
    for(int ctr=0;ctr<marks.size();ctr++) 
    { 
    //Creating new tablerows and textviews 
    TableRow row=new TableRow(this); 
    TextView txt1=new TextView(this); 
    TextView txt2=new TextView(this); 
    TextView txt3=new TextView(this); 
    //setting the text 
    txt1.setText(competitoinsIDs.get(ctr)); 
    txt2.setText(marks.get(ctr)); 
    txt3.setText(numOfQuestions.get(ctr)); 
    txt1.setLayoutParams(params1); 
    txt2.setLayoutParams(params1); 
    txt3.setLayoutParams(params1); 
    //the textviews have to be added to the row created 
    row.addView(txt1); 
    row.addView(txt2); 
    row.addView(txt3); 
    row.setLayoutParams(params2); 
    tbl.addView(row); 
    } 

} 
+0

你的代码不会在屏幕上打印任何内容 – 2012-07-05 16:34:25

+0

请确保列表中包含数据,否则显示将为空。检查答案。我编辑并在代码中添加了布局参数。 – 2012-07-05 18:13:30

,请在这里看到了Android的代码,并在活动中使用它onCreate方法

setContentView(R.layout.table_layout_xml); // use your layout xml file here 

TableLayout tableLayout = (TableLayout)findViewById(R.id.tlMarksTable); 

List<String>competitoinsIDs = new LinkedList<String>(); 
List<String>marks = new LinkedList<String>(); 
List<String>numOfQuestions = new LinkedList<String>(); 


// adding static values to test the layout. use your dynamic data here 
competitoinsIDs.add("123"); 
competitoinsIDs.add("124"); 
competitoinsIDs.add("125"); 

marks.add("56"); 
marks.add("57"); 
marks.add("58"); 

numOfQuestions.add("10"); 
numOfQuestions.add("11"); 
numOfQuestions.add("12"); 

TableRow tableRows[] = new TableRow[competitoinsIDs.size()]; 
for (int i = 0; i < tableRows.length; i++) { 

    tableRows[i] = new TableRow(this); 
    tableRows[i].setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 
      LayoutParams.WRAP_CONTENT)); 
    tableRows[i].setWeightSum(2.0f); 
    tableRows[i].setPadding(5, 5, 5, 5); 

    TextView text = new TextView(this); 
    text.setLayoutParams(new android.widget.TableRow.LayoutParams(android.widget.TableRow.LayoutParams.WRAP_CONTENT, 
      android.widget.TableRow.LayoutParams.WRAP_CONTENT, 1.0f)); 
    text.setText(competitoinsIDs.get(i)); 
    tableRows[i].addView(text); 

    text = new TextView(this); 
    text.setLayoutParams(new android.widget.TableRow.LayoutParams(android.widget.TableRow.LayoutParams.WRAP_CONTENT, 
      android.widget.TableRow.LayoutParams.WRAP_CONTENT, 1.0f)); 
    text.setText(marks.get(i)); 
    tableRows[i].addView(text); 

    text = new TextView(this); 
    text.setLayoutParams(new android.widget.TableRow.LayoutParams(android.widget.TableRow.LayoutParams.WRAP_CONTENT, 
      android.widget.TableRow.LayoutParams.WRAP_CONTENT, 1.0f)); 
    text.setText(numOfQuestions.get(i)); 
    tableRows[i].addView(text); 

    tableLayout.addView(tableRows[i]); 

} 
+0

我在'tableLayout'的最后一行发生错误 – 2012-07-05 16:29:49

+0

@tottiroma可能我知道错误是什么?在发布答案之前,我在测试项目中尝试了相同的代码,并且工作正常。所以你可以在错误期间发布logcat日志。 (只是为了清除错误,我知道你的答案和你的问题解决了) – sunil 2012-07-06 05:11:50