[英]Checkbox issue in custom listview
我想从“单击单个按钮”的“ 自定义ListView”中选择所有CheckBox 。
但是,当ListView中有9个以上的项时,我在第二行代码下面得到了NullPointerException。
View vi= diffeneceLv.getChildAt(i);
CheckBox cb = (CheckBox) vi.findViewById(R.id.conschkbx);
为此,您不应该持有各个视图的引用,因为它们被回收了。
为了您的方便, ListView
拥有一个BooleanSparseArray
来存储要检查的项目。 此数组包含项ID(适配器中项的索引/位置)到布尔值的映射。
由于ListView
会为您完成所有操作,因此避免重新发明轮子并使用ListView
的功能来保持其项目的选中状态非常有好处。 您要做的就是为ListView
设置选择模式: setChoiceMode(int choiceMode)
要获取任何项目的状态,请在ListView
上调用isItemChecked(int position)
。 如果您要覆盖适配器的getView()
,则很有用。
要获取所有已检查的内容,请在ListView
上调用getCheckedItemPositions()
。
要设置检查值,请在ListView
上调用setItemChecked(int position, boolean value)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.