我有一组View States
,每个都包含CheckBox
视图和EditText View
。当用户检查CheckBox
时,我想设置EditText
的可见性。
要从EditText
获取CheckBox
的句柄,我只需将EditText
作为标记放在CheckBox
的{{1}}中:
OnCreate()
稍后,在// In OnCreate()
v = f1.findViewById(R.id.imgNotes);
v.setTag(f1.findViewById(R.id.noteText));
v.setOnClickListener(this);
我从标记中检索onClick()
:
EditText
一切都很好。我只是想知道是否有更好的方法。或者这没关系?或者这是理想的方式吗?
谢谢!
答案 0 :(得分:1)
这可行,没有问题,但作为一种做法,避免将视图标记到其他视图。你可以尝试其他几种方法。
字段变量
为EditText和CheckBox声明两个私有成员,并在单击复选框时直接访问它们。如果我们说你有一对CheckBox和EditText就可以正常工作,但是如果连接的check_box和edit_text id太多,代码会变得混乱。
自定义视图
定义一个包含此类View状态对的custom view类,这样您就可以管理多个这样的对,每个自定义视图在该视图中保存业务逻辑,从而提供将来添加更多行为的灵活性,只需编辑这堂课。
希望有所帮助。 :)
答案 1 :(得分:0)
在onCreate
将EditText
保存到全局变量中,请执行以下操作:
mEditText = (EditText) f1.findViewById(R.id.noteText)
然后在您的onClick中使用mEditText
代替noteText