我在Activity中使用了CheckBox,它在“main.xml”(cbSetAll)中定义。 我还有一个BaseAdapter,使用“item.xml”,在“main.xml”的ListView中设置自定义ListItem。
现在我要检查所有CheckBox,具体取决于cbSetAll。当我获取cbSetAll的值时,应用程序崩溃。我这样做是
boolean bCheckAll = ((CheckBox) view.findViewById(R.id.cbSetAll)).isChecked();
通过
在BaseAdapter中设置CheckBoxes((CheckBox)view.findViewById(R.id.cbSetItem)).setChecked(bCheckAll);
如果我定义
boolean bCheckAll = true;
一切正常。我认为,错误是,CB在“main.xml”而不是“item.xml”中,因此“视图”在Nirvana中进行了范围界定。有人可以暗示一下吗?
答案 0 :(得分:1)
解决此问题的一种方法是在自定义适配器中创建一个附加变量,并从父活动中设置此变量。这样您就可以控制适配器中的行为。
您可以将此变量添加到适配器的构造函数中。
答案 1 :(得分:0)
您发现了问题,您无法从内部访问一行外的视图。快速执行此操作的方法是将bCheckAll
定义为Activity
的实例静态变量.-
static boolean bCheckAll;
在onCreate
方法中,向cbSetAll CheckBox
添加一个监听器,以便您可以更新bCheckAll
值,并从适配器的getView
方法访问它。