Примечание. Это не распространенная проблема с прокруткой, которая приводит к потере флажков.android listview adapter checkbox refreshing
У меня есть адаптер listview с relativelayout (содержащий текстовое поле и флажок) в качестве строки списка, и я хочу сделать это, когда пользователь нажимает на строку listview ... тогда галочка будет переключаться.
У меня сейчас это работает почти, но что происходит, флажок не показывает мне, что он переключился, пока я не прокручу строку с экрана, а затем вернусь. Так кажется, что он не освежает должным образом. Я предполагаю, что мне нужно явно сделать что-то еще с помощью будильника. Вот мой код:
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
внутри конечно. – Edison