解决方案 »

  1.   

    这个问题是没有区别每个ITEM上面的checkbox  你可以用HashMap<Integer,CheckBox> 这个东西来管理一下,
    key可以设置为每个ITEM的ID号,这样就不会乱了。
      

  2.   


    HashMap<Integer,CheckBox> mapBtn = new HashMap<Integer,CheckBox>();
    int indexId = 1;
    getView() {      View rootView = 
           if(!mapBtn .contanKey(indexId)){
                CheckBox checkBox =  rootView.findViewById(R.id.checkbtn);
                checkBox.setId(indexId++);
                checkBox.setOnClickListener(myclickListener);
                mapBtn.put(indexId,checkbox);
     }}
      

  3.   


    public class CarControlAdapter extends BaseAdapter { private ArrayList<PartsList> partsList;
    private Context context;
    private int newpartType;
    private PartsHolder viewHolder;
    private LayoutInflater inflater;
    private HashMap<Integer, CheckBox> mapBtn = new HashMap<Integer, CheckBox>();
    private int indexId = 1;
    public CarControlAdapter(ArrayList<PartsList> partsList, Context context,
    int newpartType) {
    super();
    this.partsList = partsList;
    this.context = context;
    this.inflater = (LayoutInflater.from(context));
    this.newpartType = newpartType;
    }
    @Override
    public int getCount() {
    if (partsList != null) {
    return partsList.size();
    } else {
    return 0;
    }
    } @Override
    public Object getItem(int position) { return partsList.get(position);
    } @Override
    public long getItemId(int position) {
    // TODO Auto-generated method stub
    return position;
    } @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
    viewHolder = new PartsHolder();
    convertView = inflater.inflate(
    R.layout.adaptor_startcarcontrol_edit, null);
    if (!mapBtn.containsKey(indexId)) {
    viewHolder.check_engine = (CheckBox) convertView
    .findViewById(R.id.check_engine);
    viewHolder.check_engine.setId(indexId++);
    mapBtn.put(indexId,viewHolder.check_engine);
    } viewHolder.text_partsname = (TextView) convertView
    .findViewById(R.id.text_partsname);
    viewHolder.btn_yes_no = (ToggleButton) convertView
    .findViewById(R.id.btn_yes_no);
    viewHolder.img_engine_editphoto1 = (ImageView) convertView
    .findViewById(R.id.img_engine_editphoto1);
    viewHolder.img_engine_editphoto2 = (ImageView) convertView
    .findViewById(R.id.img_engine_editphoto2);
    viewHolder.img_engine_editphoto3 = (ImageView) convertView
    .findViewById(R.id.img_engine_editphoto3);
    viewHolder.img_engine_editphoto4 = (ImageView) convertView
    .findViewById(R.id.img_engine_editphoto4);
    viewHolder.btn_engine_takephoto = (ImageView) convertView
    .findViewById(R.id.btn_engine_takephoto);
    viewHolder.edit_engine_err = (EditText) convertView
    .findViewById(R.id.edit_engine_err);
    viewHolder.img_play_sound = (ImageView) convertView
    .findViewById(R.id.img_play_sound);
    viewHolder.text_sound_btn = (TextView) convertView
    .findViewById(R.id.text_sound_btn);
    viewHolder.lay_edit = (RelativeLayout) convertView
    .findViewById(R.id.lay_edit);
    convertView.setTag(viewHolder);
    } else {
    viewHolder = (PartsHolder) convertView.getTag();
    } int partId = partsList.get(position).getPartsId();
    String partName = partsList.get(position).getPartsName();
    int partType = partsList.get(position).getPartsType();// 1行车控制
    // 2车辆内饰3随车工具
    String sendDescription = partsList.get(position).getSendDescription();// 部件文字描述
    int sendCondition = partsList.get(position).getSendCondition();// 0无 1完好
    // 2损坏
    String sendImgFile = partsList.get(position).getSendImgFile();// 图片地址
    String sendPhoneticFile = partsList.get(position).getSendPhoneticFile();// 语音地址 viewHolder.text_partsname.setText(partName);
    viewHolder.edit_engine_err.setText("411111");
    switch (sendCondition) {
    case 0:
    viewHolder.check_engine.setChecked(false);
    viewHolder.lay_edit.setVisibility(View.GONE);
    viewHolder.btn_yes_no.setVisibility(View.GONE);
    break;
    case 1:
    viewHolder.check_engine.setChecked(true);
    viewHolder.lay_edit.setVisibility(View.GONE);
    viewHolder.btn_yes_no.setVisibility(View.VISIBLE);
    viewHolder.btn_yes_no.setChecked(true);
    break;
    case 2:
    viewHolder.check_engine.setChecked(true);
    viewHolder.lay_edit.setVisibility(View.VISIBLE);
    viewHolder.btn_yes_no.setVisibility(View.VISIBLE);
    viewHolder.btn_yes_no.setChecked(false);
    break; default:
    break;
    } viewHolder.btn_yes_no
    .setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override
    public void onCheckedChanged(CompoundButton buttonView,
    boolean isChecked) { if (isChecked) {
    viewHolder.lay_edit.setVisibility(View.GONE);
    } else {
    viewHolder.lay_edit.setVisibility(View.VISIBLE);
    }
    }
    });
    viewHolder.check_engine
    .setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override
    public void onCheckedChanged(CompoundButton buttonView,
    boolean isChecked) { if (isChecked) {
    viewHolder.btn_yes_no.setVisibility(View.VISIBLE);
    } else {
    viewHolder.btn_yes_no.setVisibility(View.GONE);
    viewHolder.lay_edit.setVisibility(View.GONE);
    } }
    });
    return convertView; } public void removeAll() {
    partsList.clear();
    } public void addItem(PartsList partsList1) {
    if (partsList1 != null) {
    partsList.add(partsList1); } } class PartsHolder {
    private CheckBox check_engine;// 有无
    private TextView text_partsname;// 工具名称
    private RelativeLayout lay_edit;// 编辑
    private ToggleButton btn_yes_no;// 有无损坏
    private ImageView img_engine_editphoto1;
    private ImageView img_engine_editphoto2;
    private ImageView img_engine_editphoto3;
    private ImageView img_engine_editphoto4;
    private ImageView btn_engine_takephoto;// 点击拍照
    private EditText edit_engine_err;// 输入
    private ImageView img_play_sound;// 点击播放声音
    private TextView text_sound_btn;// 按住录音
    } @Override
    public boolean isEnabled(int position) {
    // TODO Auto-generated method stub
    return false;
    }
    }
    checkbox,findviewbyId二次加载的时候直接每调用,你看看我这里哪里需要修改下