清除网格视图中的所有选定项目

Clear all selected items in a gridview

我在 CHOICE_MODE_MULTIPLE 的 ExpandableListView 中有一个 gridview,我试图在按下按钮时取消选择所有项目,但我这样做的方式只是取消选择最后一个项目,如何我可以清除所有这些吗?

@Override
public int getCount() {
    return child.size();
}

@Override
public Object getItem(int position) {
    return position;
}

@Override
public long getItemId(int arg0) {
    return 0;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    holder = null;
    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.child_item, null);
        holder = new ViewHolder();

        holder.text = (TextView) convertView.findViewById(R.id.name);
        convertView.setTag(holder);
        final View finalConvertView = convertView;
        convertView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                isChecked = child.get(position).isChecked();
                if (!isChecked) {
                    child.get(position).setChecked(true);
                } else {
                    child.get(position).setChecked(false);                       
                }

                ex.findViewById(R.id.notificar).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(final View v) {
                        //clear all selected items
                        for(int i = 0; i< getCount(); i++){
                            child.get(i).setChecked(false);
                        }
                    }
                });
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
            holder.text.setText(child.get(position).getNome());
            return convertView;
        }
    }
}
static class ViewHolder {
    TextView text;
}

你的问题是先调用 child.size,它返回 1。
您正在从不同的视图获取子项计数。

@Override
public int getCount() {
    return child.size();
}

如果您在 OnClickListener 内调用 child.size(),您正在使用

public void onClick(final View v) {

您应该遍历列表的数组适配器,因为如果列表是可滚动的,视图的 child.counts 将不同于选中列表项的数量。因为视图中的项目(它们被回收)少于列表中的项目。

尝试从 activity 或包含列表的片段调用 listView.clearChoices();adapter.notifyDataSetChanged();,而不是在适配器内部。