在表中动态加载自定义表格单元格

时间:2010-08-19 09:10:19

标签: android tablerow

我想在表格中创建5种不同类型的单元格以及标识符,并根据给定的数据根据​​类型适当加载它们? 在TableLayout中创建TableRow似乎是其中一个选项,但如何根据类型动态创建tableRows?

提前完成。

1 个答案:

答案 0 :(得分:0)

你能检测出执行时的类型吗?如果是,则应使用开关或if else结构直接进行。

根据行类型使用在运行时对XML资源进行膨胀:

((LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE))
.inflate(layoutId, yourTableLayout, true);

在充气资源之前设置适当的 layoutId ,然后继续。参数 yourTableLayout true 只是我的猜测,请查看LayoutInflater处的文档,然后选择适合您需要的膨胀方法。

动态创建TableRows ,本教程可能有所帮助:Creating TableRow rows inside a TableLayout programatically

基本上:

1-获取TableLayout并创建TableRow

// Get the TableLayout
TableLayout tl = (TableLayout) findViewById(R.id.maintable);

TableRow tr = new TableRow(this);
tr.setId(100+current);
tr.setLayoutParams(new LayoutParams(
                LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));   

2-创建要添加的元素

TextView labelTV = new TextView(this);
labelTV.setId(200+current);
labelTV.setText(provinces[current]);
labelTV.setTextColor(Color.BLACK);
labelTV.setLayoutParams(new LayoutParams(
                LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));
tr.addView(labelTV);

3-将TableRow添加到TableLayout

// Add the TableRow to the TableLayout
tl.addView(tr, new TableLayout.LayoutParams(
                LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));

似乎很容易和快速,我没有测试过它。