有没有办法在像 CheckedTextView
这样的组中拥有多个 RadioGroup
?所以只会同时检查一个 CheckedTextView
。
如果这是不可能的,因为 CheckedTextView
是 TextView
的 child ,那么在其他 5 个 CheckedTextView
的组中只能检查 一个 CheckedTextViews
的最内存有效的编码逻辑方法是什么?
每次按下一个 CheckedTextView
时,我都会检查所有其他人的检查状态并相应地更改它,这看起来内存效率不高。
最佳答案
我设法使用 CheckedTextView
来作为某个组的一部分(例如,一次只能选择一个 CheckedTextView
)。
//pass view which fired onClick event
//pass an array or other container of checkedTextViews (optional)
void setCheckedState(View v, CheckedTextView[] whichCheckedViews) {
CheckedTextView temp = (CheckedTextView) v;
//first uncheck all views in the arraw
for (CheckedTextView item : whichCheckedViews)
item.setChecked(false);
//detect which checkedTextView initiated onClick event
switch (v.getId()) {
case R.id.checkedTextView_1:
case R.id.checkedTextView_2:
case R.id.checkedTextView_3:
case R.id.checkedTextView_N:
temp.setChecked(true);
break;
default:
break;
}
}
这就像一个魅力。
注意: 我没有检查内存消耗,因为我只有 5 个 View 。我也没有检查执行时间,因为它在所有测试设备上都没有出现故障。