Android 单击按钮获取gridview项中所有复选框的复选框状态

Android 单击按钮获取gridview项中所有复选框的复选框状态,android,android-checkbox,Android,Android Checkbox,我有下面的代码,现在我需要跟踪每个gridview项中的复选框状态,并通过单击按钮获取该信息以更新信息。gridview的imageadapter调用活动中的My button事件 public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; ImageView imgView = null; if (c

我有下面的代码,现在我需要跟踪每个gridview项中的复选框状态,并通过单击按钮获取该信息以更新信息。gridview的imageadapter调用活动中的My button事件

    public View getView(int position, View convertView, ViewGroup parent)
    {
        ViewHolder holder;
        ImageView imgView = null;

            if (convertView == null) {

                holder = new ViewHolder(); 
                LayoutInflater ltInflate = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); 
                convertView = ltInflate.inflate(R.layout.griditem, null);

                holder.textview1 = (TextView) convertView.findViewById(R.id.grid_item_alert_date);
                holder.textview2 = (TextView) convertView.findViewById(R.id.grid_item_alert_time);
                holder.textview3 = (TextView) convertView.findViewById(R.id.grid_item_alert_type);

                holder.imageview    = (ImageView) convertView.findViewById(R.id.grid_item_image);
                holder.checkbox = (CheckBox) convertView.findViewById(R.id.checkbox_ack);
                convertView.setTag(holder);

            }
            else
            {   
                holder = (ViewHolder) convertView.getTag();
            }

            holder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                  @Override
                  public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked)
                {

                    //Accessing or saving position to a List doesn't work here

                    //How to add ? info to a list here...

                }

                  } });

            holder.textview1.setText("Text 1 ");
            holder.textview2.setText("Text 2 ");
            holder.textview3.setText("Text 3 ");
            holder.checkbox.setChecked(false);
            holder.imageview.setImageBitmap(bitmap);
            holder.id = position;

            return convertView;
    }
在活动中:

private OnClickListener UpdateButtonListener =
            new OnClickListener(){
            public void onClick(View v)
            {
            //CheckBox ckbocx = (CheckBox) findViewById(R.id.checkbox_ck);
                        //Need info on all the checkboxes for each gridview item

    };

任何线索、提示都是非常受欢迎的

处理整数数组以存储选中/未选中复选框时的状态, 最初用0值填充数组,这表示未选中的复选框如下

int[] checkStates;
 checkStates = new int[datalist.length()];
   for (int i = 0; i < datalist.length(); i++) {
        checkStates[i] = 0;
   }
在getview方法中,通过这种方式处理选中/取消选中状态

if (checkStates[position] == 0) {
            checkbox.setChecked(false); // set unchecked"
        } else {
            checkbox.setChecked(true); // set checked"
        }

通过这种方式,您将获得选中复选框的信息,进一步处理按钮单击事件,并获得选中和取消选中时填充的int数组。

处理整数数组以存储选中/取消选中复选框时的状态, 最初用0值填充数组,这表示未选中的复选框如下

int[] checkStates;
 checkStates = new int[datalist.length()];
   for (int i = 0; i < datalist.length(); i++) {
        checkStates[i] = 0;
   }
在getview方法中,通过这种方式处理选中/取消选中状态

if (checkStates[position] == 0) {
            checkbox.setChecked(false); // set unchecked"
        } else {
            checkbox.setChecked(true); // set checked"
        }

通过这种方式,您将获得选中复选框的信息,进一步处理按钮单击事件,并获得在选中和取消选中时填充的int数组。

您想更新特定按钮单击时的选中值,对吗?@RobinHood感谢您的消息。对于选中的所有复选框,没有一个按钮。该按钮仅获取处于活动状态/选中状态且基于此信息工作的复选框列表。单击该按钮后,所有复选框均被选中?该按钮只需获取有关其未交互的所有复选框的信息(选中/未选中)。因此,我似乎找不到一种方法来获取有关所有复选框的信息。来这里,您想在特定按钮单击时更新选中值,对吗?@RobinHood谢谢您的消息。对于选中的所有复选框,没有一个按钮。该按钮仅获取处于活动状态/选中状态且基于此信息工作的复选框列表。单击该按钮后,所有复选框均被选中?该按钮只需获取有关其未交互的所有复选框的信息(选中/未选中)。因此,我似乎找不到一种方法来获取有关所有复选框的信息。到这里来,这个“checkbox.setOnClickListener(new OnClickListener(){”对我不起作用,它只有checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){@Override public void onCheckedChanged(CompoundButton buttonView,boolean isChecked){if(isChecked)好的,谢谢RobinHood,但是我如何将这个数组移动到父数组activity@AdilSoomro在聊天窗口中补充道:“您可以使用yourAdapter.getCheckStateArray()获取它,请确保在适配器中写入此方法,然后从该方法返回适配器的数组。“this”复选框。setOnClickListener(new OnClickListener(){”对我不起作用。它只有一个复选框。setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){@Override public void onCheckedChanged(CompoundButton buttonView,boolean isChecked){if(isChecked)好的,谢谢RobinHood,但是我如何将这个数组移动到父数组activity@AdilSoomro在聊天窗口中补充道:“您可以使用yourAdapter.getCheckStateArray()获取它,确保在适配器中写入此方法,然后从该方法返回适配器的数组。“