天天看點

Android中ListView資料不止一頁,滑動後CheckBox丢失選中狀态



在adapter使用全局變量儲存選中狀态,參考以下寫法。

@Override

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

  Role bean = list.get(position);

  ViewHolder holder = null;

  if(convertView == null){

   convertView = inflater.inflate(resourceId,null);

   holder = new ViewHolder();

   holder.ID    = (TextView) convertView.findViewById(R.id.role_id);

   holder.roleName = (TextView) convertView.findViewById(R.id.role_name);

   holder.check    = (CheckBox) convertView.findViewById(R.id.role_check);

   convertView.setTag(holder);

  }else{

   holder = (ViewHolder)convertView.getTag();

  }

  holder.roleName.setText(bean.getName());

  holder.ID.setText(String.valueOf(bean.getId()));

  final int posi = position; // posi必須聲明為final

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

    @Override

    public void onCheckedChanged(CompoundButton buttonView,

      boolean isChecked) {

     list.get(pos).setChoosed(isChecked);

    }

   });

  holder.check.setChecked(bean.isChoosed());

  return convertView;

 }