注意:这不是滚动的常见问题,导致复选框丢失。android listview adapter复选框刷新
我有一个listview适配器与一个相关布局(包含一个textview和一个复选框)作为列表视图行,我想这样做当用户点击列表视图行...然后复选框将切换。
我现在正在工作,但发生了什么是复选框并没有告诉我,它已经切换,直到我滚动屏幕上的行,然后回来。所以它看起来不够爽快。我的猜测是我需要用复选框侦听器明确地做其他事情。这里是我的代码:
ViewHolder holder = null;
MainContactsListOnOff entry = listMaincontactslistOnOff.get(position);
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.contact_rowonoff, null);
holder = new ViewHolder();
holder.code = (TextView) convertView.findViewById(R.id.textView1onoff);
holder.name = (CheckBox) convertView.findViewById(R.id.checkBox1onoff);
holder.img = (ImageView) convertView.findViewById(R.id.imageView1onoff);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.code.setText(entry.getName().toString());
if(entry.getOnoff()==1){
holder.img.setImageResource(R.drawable.green);
} else {
holder.img.setImageResource(R.drawable.red);
}
convertView.setId(entry.getDevID());
holder.name.setTag(entry);
holder.name.setChecked(entry.getChecked());
convertView.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
RelativeLayout rl = (RelativeLayout) arg0;
CheckBox chkBx = (CheckBox) rl.getChildAt(1);
MainContactsListOnOff mclOO = (MainContactsListOnOff) chkBx.getTag();
if(chkBx.isChecked()){
mclOO.setChecked(false);
} else {
mclOO.setChecked(true);
}
}
});
return convertView;
听者还是在外面? – milkboneUnderwear 2013-02-12 19:44:59
当然。 – Edison 2013-02-12 20:04:05