Android - 迭代所有项目

时间:2014-04-24 17:34:54

标签: android listview

经过2个小时的研究后,我不知道该怎么做。

我有一个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之后,应用程序就崩溃了。因为它只采用可见元素......

感谢您的帮助

1 个答案:

答案 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();
}