我正在动态地向TableLayout
添加行,每行都有多个TextView
。
我想为TableLayout
中的每一行循环,我想更新一些行(而不是每一行),例如我的行中TextView
的文本。我该如何管理?
答案 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;);