注意:這不是滾動的常見問題,導致複選框丟失。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