我有一个listview,listview的所有元素都是包含2个元素的子视图:textview和switch。
列表可能很长,所以我创建了一个按钮来交替将所有开关传递给是/否。
问题:有时,随机我有1或2个未切换的开关......
这是迭代的代码示例:
for (int i = 0; i < maListViewPerso.getCount(); i++) {
View v = maListViewPerso.getChildAt(i);
Switch switch_temp = (Switch) v.findViewById(R.id.item_pers_ajout_op_switch);
switch_temp.setChecked(tous_coches);
}
我尝试使用getCount()
代替getChildCount()
。现在我在列表中有很多元素,但在10或11之后,应用程序就崩溃了。因为它只采用可见元素......
感谢您的帮助
答案 0 :(得分:1)
假设您的适配器基于某个类,并且此类具有设置和获取开关值的方法,您应该能够在适配器中执行以下操作:
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.some_layout, null);
}
Switch switch_temp = (Switch) v.findViewById(R.id.item_pers_ajout_op_switch);
switch_temp.setChecked(getItem(position).getTousCoches());
return convertView;
}
public void switchAll(boolean mySwitch) {
for (int i=0; i<getCount(); i++) {
getItem(i).setTousCoches(mySwitch);
}
notifyDataSetChanged();
}