Android 在gridview中添加了一个复选框,但ckeckBox onclick无法正常工作
我要做的是在gridview中获取一个选中项的列表 当用户选择或取消选择我需要在数组中存储“true”或“false”的复选框时,在gridview中添加了一个复选框,无论该行是否被选中 适配器代码如下所示: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
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值。对于网格中的每个条目。