-1

我在我的活动中使用了一个复选框,它在“main.xml”(cbSetAll)中定义。我还有一个 BaseAdapter,使用“item.xml”,用于在“main.xml”的 ListView 中设置自定义 ListItems。

现在我想检查所有复选框,具体取决于 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 中的范围。有人可以给个提示吗?

4

2 回答 2

1

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

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

于 2013-10-13T20:03:05.613 回答
0

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

static boolean bCheckAll;

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

于 2013-10-13T20:03:30.173 回答