问题是这样的:1 listview 里面有多个item ,其中一个item是已经选中的,现在点击这个选中的radiobutton其他的radiobutton取消选中 ,这个功能已经做好了 了. 如图,但是点击未选中的radiobutton 想要把默认选中的radiobutton给去掉选中状态,可是没能成功!变成2个radiobutton都选中
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder item=null;
if(convertView==null){
item= new ViewHolder();
//获得组件,实例化组件
convertView=layoutInflater.inflate(R.layout.autoset_item, null);
item.bankNameTxt=((TextView) convertView.findViewById(R.id.cardInfoTxt));
item.checkAuto=((RadioButton) convertView.findViewById(R.id.checkAuto));
item.cardIdHide=((TextView) convertView.findViewById(R.id.cardIdTextVIew));
item.cardIdHide.setVisibility(View.INVISIBLE);
//可以使用setTag把查找的view缓存起来方便多次重用
convertView.setTag(item);
}else{
item=(ViewHolder)convertView.getTag();
}
final RadioButton radio= (RadioButton) convertView.findViewById(R.id.checkAuto);
item.checkAuto=radio;
item.checkAuto.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//重置,确保最多只有一项被选中
for (String key : states.keySet()) {
states.put(key, false);
}
states.put(String.valueOf(position), radio.isChecked());
System.out.println(position + "----------------");
CardAutoListAdapter.this.notifyDataSetChanged();
}
});
boolean res=false;
if(states.get(String.valueOf(position)) == null || states.get(String.valueOf(position))== false){
res=false;
states.put(String.valueOf(position), false);
}
else
res = true;
item.checkAuto.setChecked(res);
//默认选中
if (data.get(position).get("isAutoPay").equals("0")){
System.out.println(position);
item.checkAuto.setChecked(true);
}
//绑定数据 ,将传入data进行逐个赋值
item.bankNameTxt.setText(data.get(position).get("bankName") + " **** **** **** " + data.get(position).get("endAcctid") + "");
item.cardIdHide.setText(data.get(position).get("cardId") + "");
// else{
// //if (data.get(position).get("isAutoPay").toString().trim().equals("0")){
// System.out.println(position);
// item.checkAuto.setChecked(false);
// //}
// }
return convertView;
}
static class ViewHolder {
TextView bankNameTxt;//银行名称
TextView cardInfoNo;//银行卡号
RadioButton checkAuto;//代扣选择
TextView cardIdHide;//卡号
}