机器人在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);
}
}
答
,请在这里看到了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
你的代码不会在屏幕上打印任何内容 – 2012-07-05 16:34:25
请确保列表中包含数据,否则显示将为空。检查答案。我编辑并在代码中添加了布局参数。 – 2012-07-05 18:13:30