这样 你点击的时候 是不是 会获取一个view  通过这个view 获取你那个 checkbox 控件 然后setcheck 吧 就OK了。

解决方案 »

  1.   


    我的代码是这样子的:每当遍历完毕的时候,要报错:java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
    listData为绑定listview的list,list2为从数据库中查询出来的listview中可能包含的数据项,用listData里的item2与list2中的item0做比较,listData始终大于list2。
    // 重写View
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub

    LayoutInflater mInflater = LayoutInflater.from(context);
    convertView = mInflater.inflate(R.layout.listviewitem, null);
    TextView xuhao = (TextView) convertView.findViewById(R.id.item_tv);
    xuhao.setText((String) listData.get(position).get("item0"));
    TextView jibenxinxi = (TextView) convertView.findViewById(R.id.jibenxinxi);
    jibenxinxi.setText((String) listData.get(position).get("item1"));
    TextView id = (TextView) convertView.findViewById(R.id.qnid);
    id.setText((String) listData.get(position).get("item2"));
    CheckBox check = (CheckBox) convertView.findViewById(R.id.qnselect);


    List<HashMap<String, String>> list2 = new ArrayList<HashMap<String, String>>();
    list2 = new DBUtil().selectlistforguanlihuibi1(Users.useridforcs);
    if (list2.size() == 0) {
    Toast.makeText(manActivity.this, "您没有回避项目!",
    Toast.LENGTH_LONG).show();
    } else {
    for (Map<String, String> m : listData) {
    for (String k : m.keySet()) {
     System.out.println(k + " : " + m.get(k));
    /*if (k.equals("item2")) {
    System.out.println("已打分列表"
    + list2.get(position).get("item0")
    .toString());
    System.out.println("整体列表" + m.get(k));
    if (list2.get(position).get("item0").toString()
    .equals(m.get(k))) { System.out
    .println("ssssssssssssssssssssssssssssssssssssss");
    check.setChecked(true);
    break; }
    }*/
    }
    }
    }

    check.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView,
    boolean isChecked) {
    // TODO Auto-generated method stub
    if (isChecked) {
    state.put(position, isChecked);
    scount = scount +1;
    tvcount.setText("请选择30位,超出则无效,已经选择"+scount+"位,剩"+(35-scount)+"位");
    } else {
    state.remove(position);
    scount = scount -1;
    tvcount.setText("请选择30位,超出则无效,已经选择"+scount+"位,剩"+(35-scount)+"位");
    }
    }
    });
    check.setChecked((state.get(position) == null ? false : true));
    return convertView;
    }