问题描述:单选结果会混乱显示,如,选中123item,滑动时可能会显示到其他的item上。

解决思路:当你选中1,2,3 item时,滑动到下一页,下一页的1,2。3  item会默认显示选中效果,一个屏幕显示10个item,下一页11,12,13item会有显示效果

方法:当滑动listview时,每出现一个item,radiogroup都要清理原来的效果,

 holder.rgCallLevel.setOnCheckedChangeListener(null);
holder.rgCallLevel.clearCheck();
CallLevelInfo info = list.get(position);
if (info.getType() == 1){
holder.firstlevel.setChecked(true);
}else if (info.getType() == 2){
holder.secindlevel.setChecked(true);
}else {
holder.rgCallLevel.clearCheck();

}

holder.rgCallLevel.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub

Log.e(TAG, "onCheckedChanged: " );
switch (checkedId){
case R.id.rb_firstlevel:

group.check(R.id.rb_firstlevel);
CallLevelInfo info1 = list.get(position);
info1.setType(1);
notifyDataSetChanged();
Log.e(TAG, "onCheckedChanged 1: "+list.get(position).getNum() );

break;
case R.id.rb_secondlevel:

group.check(R.id.rb_secondlevel);
CallLevelInfo info2 = list.get(position);
info2.setType(2);
notifyDataSetChanged();
Log.e(TAG, "onCheckedChanged 2: "+list.get(position).getNum() );

break;
default:break;

}

}
});
// holder.rgCallLevel.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// RadioGroup group = (RadioGroup) v;
//
//
// }
// });
return convertView;
}



class ViewHolder {
private TextView tvSickBed;
private RadioGroup rgCallLevel;
private RadioButton firstlevel;
private RadioButton secindlevel;

public ViewHolder(View view) {
tvSickBed = (TextView) view.findViewById(R.id.tv_sickbed);
rgCallLevel = (RadioGroup) view.findViewById(R.id.rg_calllevel);

firstlevel = (RadioButton)view.findViewById(R.id.rb_firstlevel);
secindlevel = (RadioButton)view.findViewById(R.id.rb_secondlevel);
}
}
posted on 2017-09-13 17:23  跳动的米  阅读(254)  评论(0编辑  收藏  举报