假设我有这样的视图结构:
<TableLayout>
<TableRow>
<ToggleButton />
<ToggleButton />
<ToggleButton />
</TableRow>
<TableRow>
<ToggleButton />
<ToggleButton />
<ToggleButton />
</TableRow>
</TableLayout>
我的目标是让切换按钮充当单选按钮组。 SOF上有很多答案说使用RadioGroup
。我尝试了一些,它们工作但不如预期,因为它们打破了TableRow的格式,比如:列固定宽度。然后我决定使用递归方法检查&amp;重置切换按钮状态,如下所示:
private void resetChildState(ViewGroup parent, int target) {
int count = parent.getChildCount();
for (int i = 0; i < count; i++) {
View child = parent.getChildAt(i);
if (child instanceof TableRow) {
resetChildState((ViewGroup)child, target);
} else if (child instanceof ToggleButton) {
if ((int)child.getTag() != target) {
((ToggleButton) child).setChecked(false);
}
}
}
}
这有效,但另一个问题来了。响应时间太糟糕了,因为在主线程上有太多工作导致了一些滞后行为。
我的问题是:对于我的情况,还有其他更好的方法吗?
答案 0 :(得分:0)
保留一个只有ToggleButtons的列表并迭代它以重置它们。然后,您不需要遍历整个视图层次结构。