使用父android layout.xml中的元素

时间:2013-10-13 19:57:22

标签: android checkbox scope android-activity baseadapter

我在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中进行了范围界定。有人可以暗示一下吗?

2 个答案:

答案 0 :(得分:1)

解决此问题的一种方法是在自定义适配器中创建一个附加变量,并从父活动中设置此变量。这样您就可以控制适配器中的行为。

您可以将此变量添加到适配器的构造函数中。

答案 1 :(得分:0)

您发现了问题,您无法从内部访问一行外的视图。快速执行此操作的方法是将bCheckAll定义为Activity的实例静态变量.-

static boolean bCheckAll;

onCreate方法中,向cbSetAll CheckBox添加一个监听器,以便您可以更新bCheckAll值,并从适配器的getView方法访问它。