Android 在gridview中添加了一个复选框,但ckeckBox onclick无法正常工作

Android 在gridview中添加了一个复选框,但ckeckBox onclick无法正常工作,android,gridview,android-checkbox,Android,Gridview,Android Checkbox,我要做的是在gridview中获取一个选中项的列表 当用户选择或取消选择我需要在数组中存储“true”或“false”的复选框时,在gridview中添加了一个复选框,无论该行是否被选中 适配器代码如下所示: public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context .getS

我要做的是在gridview中获取一个选中项的列表

当用户选择或取消选择我需要在数组中存储“true”或“false”的复选框时,在gridview中添加了一个复选框,无论该行是否被选中

适配器代码如下所示:

public View getView(int position, View convertView, ViewGroup parent) {

    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    pos = position;
    View MyView = convertView;
    if (convertView == null) { 
        holder = new ViewHolder();
        MyView = inflater.inflate(R.layout.hospital_row, null);
        holder.tv = (TextView)MyView.findViewById(R.id.hospital_name);
        holder.address = (TextView)MyView.findViewById(R.id.address);
        holder.selected = (CheckBox)MyView.findViewById(R.id.checkBox1);

        MyView.setTag(holder);
   } else {

       holder = (ViewHolder) MyView.getTag();
       }

    holder.address.setText(addressValues[position]);
    holder.tv.setText(procedureValues[position] );   
    holder.selected.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {                
                 Log.i("adapter","pos = "+ pos);
                 if(holder.selected.isChecked()){
                        arrlist.HOSPITALSELECTED[pos] = "true";
                    }else{
                        arrlist.HOSPITALSELECTED[pos] = "false";
                    }

                    for(String sel : arrlist.HOSPITALSELECTED){
                        Log.e("Hospital Adapter", "Selected =" + sel);
                    }
            }   
        }); 
        return MyView;      
}

class ViewHolder {
    TextView tv;
    TextView address;
    CheckBox selected;
    int id;
}
Log cat:我在网格视图中有3个元素,但它只返回2&0个位置

02-03 14:46:04.605: I/adapter(816): pos = 2

02-03 14:46:04.605: E/Hospital Adapter(816): Selected =true

02-03 14:46:04.617: E/Hospital Adapter(816): Selected =false

02-03 14:46:04.625: E/Hospital Adapter(816): Selected =true

02-03 14:46:08.015: I/adapter(816): pos = 2

02-03 14:46:08.015: E/Hospital Adapter(816): Selected =true
02-03 14:46:08.025: E/Hospital Adapter(816): Selected =false
02-03 14:46:08.025: E/Hospital Adapter(816): Selected =true```

你的观点正在重建,处理好了吗?您可能希望实现一个多维布尔数组来检查位置。不是多维数组,只是我想存储它的状态,不管它是否被选中。我在这里没有得到正确的位置。如果我单击第一个元素,它会在某个时间返回2,某个时间它工作正常。是的,伙计,将位置保存在多维数组中。这是获得正确值的唯一方法。久经考验!另一种方法是,在数据库中存储bool值。对于网格中的每个条目。