Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何选择/取消选择所有复选框?_Android_Checkbox_Adapter - Fatal编程技术网

Android 如何选择/取消选择所有复选框?

Android 如何选择/取消选择所有复选框?,android,checkbox,adapter,Android,Checkbox,Adapter,我有一个带有imageview、textView和复选框的适配器,还有一个用于选择所有复选框的全选按钮。我搜索了很多关于如何做这个“全选”复选框的内容,但没有成功。谁能再解释一下我该怎么办?求你了…我必须做这件紧急的事 这是我的适配器: Public class LazyAdapter1 extends BaseAdapter { private Activity activity; private String[] data; private

我有一个带有imageview、textView和复选框的适配器,还有一个用于选择所有复选框的全选按钮。我搜索了很多关于如何做这个“全选”复选框的内容,但没有成功。谁能再解释一下我该怎么办?求你了…我必须做这件紧急的事

这是我的适配器:

Public class LazyAdapter1 extends BaseAdapter {

        private Activity activity;
        private String[] data;
        private String[] nume;
        private LayoutInflater inflater=null;
        public ImageLoader imageLoader; 

        public LazyAdapter1(Activity a, String[] d, String[] f) {
            activity = a;
            data=d;
            nume=f;
            inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            imageLoader=new ImageLoader(activity.getApplicationContext());
        }

        public int getCount() {
            return data.length;
        }

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

        public long getItemId(int position) {
            return position;
        }

        public class ViewHolder{
            public TextView text;
            public ImageView image;
            public CheckBox ck;
        }



        public View getView(int position, View convertView, ViewGroup parent) {
            View vi=convertView;
            ViewHolder holder;
            if(convertView==null){
                vi = inflater.inflate(R.layout.item, null);
                holder=new ViewHolder();
                holder.text=(TextView)vi.findViewById(R.id.text);;
                holder.image=(ImageView)vi.findViewById(R.id.image);
                holder.ck=(CheckBox)vi.findViewById(R.id.chkbox);
                vi.setTag(holder);
            }
            else
                holder=(ViewHolder)vi.getTag();

            holder.text.setText(nume[position]);
            holder.image.setTag(data[position]);
            imageLoader.DisplayImage(data[position], activity, holder.image);
            return vi;
        }
    }

提前感谢。

这将获取listview中的所有视图,并在每个视图中获取复选框并将其设置为选中:

List<View> listOfViews = new ArrayList<View>();
listView1.reclaimViews(listOfViews);
for (View v : listOfViews)
{
    CheckBox cb = (CheckBox)v.findViewById(R.id.checkbox);
    cb.setChecked(true);
}
然后,如果要选中所有复选框,请将包含复选框的复选状态的arraylist中的所有值设置为true。然后调用listView1.setAdapteradapter

现在点击你的按钮 交换flag的值

flag = !flag;
adapter.notifydatasetchanged();
现在在您的getView方法中

public View getView(int position, View convertView, ViewGroup parent) {
    View vi = convertView;
    ViewHolder holder;
    if (convertView == null) {
        vi = inflater.inflate(R.layout.item, null);
        holder = new ViewHolder();
        holder.text = (TextView) vi.findViewById(R.id.text);
        holder.image = (ImageView) vi.findViewById(R.id.image);
        holder.ck = (CheckBox) vi.findViewById(R.id.chkbox);
        vi.setTag(holder);
    } else {
        holder = (ViewHolder) vi.getTag();
    }
    holder.ck.setChecked(flag);
    holder.text.setText(nume[position]);
    holder.image.setTag(data[position]);
    imageLoader.DisplayImage(data[position], activity, holder.image);
    return vi;
}

我为每个选中的项目分配了一个id,然后使用哈希映射跟踪选中的项目

谢谢…它可以工作:…仍然存在一个小问题:当我选择“全选”按钮时,复选框已选中,但我只能在滚动所有列表后才能看到它们,因为当我选择按钮时,第一视图中的项目未被选中。问题应该出在哪里?
flag = !flag;
adapter.notifydatasetchanged();
public View getView(int position, View convertView, ViewGroup parent) {
    View vi = convertView;
    ViewHolder holder;
    if (convertView == null) {
        vi = inflater.inflate(R.layout.item, null);
        holder = new ViewHolder();
        holder.text = (TextView) vi.findViewById(R.id.text);
        holder.image = (ImageView) vi.findViewById(R.id.image);
        holder.ck = (CheckBox) vi.findViewById(R.id.chkbox);
        vi.setTag(holder);
    } else {
        holder = (ViewHolder) vi.getTag();
    }
    holder.ck.setChecked(flag);
    holder.text.setText(nume[position]);
    holder.image.setTag(data[position]);
    imageLoader.DisplayImage(data[position], activity, holder.image);
    return vi;
}