在TableLayout中动态更新某些行

时间:2011-12-13 11:05:50

标签: android dynamic rows tablelayout

我正在动态地向TableLayout添加行,每行都有多个TextView

我想为TableLayout中的每一行循环,我想更新一些行(而不是每一行),例如我的行中TextView的文本。我该如何管理?

2 个答案:

答案 0 :(得分:7)

循环遍历TableLayout的子节点,它们应该是TableRows(或其他布局) - 跳过您不想更新的节目。循环或findViewById TableRow(或其他)的子项将是你的TextViews

将TextView / CheckBox添加到TableRow时,可以使用setId(R.id.id_of_the_view)设置View的id(您可能希望将其添加到res / values / ids.xml文件中)。

然后像这样循环:

TableLayout tableLayout = null;
for(int n = 0, s = tableLayout.getChildCount(); n < s; ++n) {
    TableRow row = (TableRow)tableLayout.getChildAt(n);
    TextView name = (TextView)row.findViewById(R.id.tv_name);
}

因为您正在使用row.findViewById,所以您正在寻找特定行中的特定ID。

答案 1 :(得分:2)

我建议使用setTag方法快速访问特定行,并使用行中的视图。

例如,假设您在某个列中有一个CheckBox,它表示&#34; isSomethingEnabled&#34;。创建CheckBox时,请执行setTag(&#34; foo&#34;)。

也可以在行上使用setTag,例如setTag(&#34; rowKey&#34;)

快速到达特定行

TableRow tRow =(TableRow)tLayout.findViewWithTag(&#34; rowKey&#34;);

快速找到一个特定的孩子

查看v = tRow.findViewWithTag(&#34; foo&#34;);