ListView中点选RadioButton的解决方案

public class RadioAdapter extends BaseAdapter
{
    private LayoutInflater inflater;
    private ArrayList list;
    private viewHolder holder;
    //最重要的标记
    private int index = -1;
    private Context c;


    public RadioAdapter(Context c, String[] authors) {
super();
this.c = c;
this.authors = authors;
inflater = LayoutInflater.from(c);
}

//getItem() getItemId 这些就不写了 都一样 主要是getView的设计

public View getView()
{
holder = new viewHolder();
if (convertView == null) {
convertView = inflater.inflate(R.layout.item_list, null);
holder.nameTxt = (TextView) convertView.findViewById(R.id.author);
holder.selectBtn = (RadioButton) convertView
.findViewById(R.id.radio);
convertView.setTag(holder);
} else {
holder = (viewHolder) convertView.getTag();
}

holder.nameTxt.setText(authors[position]);
holder.selectBtn
.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
Toast.makeText(c, "进行点中的操作:" + authors[position],
Toast.LENGTH_LONG).show();
index = position;
notifyDataSetChanged();
}
}
});

if (index == position) {// 选中的条目和当前的条目是否相等
holder.selectBtn.setChecked(true);
} else {
holder.selectBtn.setChecked(false);
}
return convertView;

}
}

核心就是这几句话
holder.selectBtn
.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
Toast.makeText(c, “进行点中的操作:” + authors[position],
Toast.LENGTH_LONG).show();
index = position;
notifyDataSetChanged();
}
}
});

if (index == position) {// 选中的条目和当前的条目是否相等
holder.selectBtn.setChecked(true);
} else {
holder.selectBtn.setChecked(false);
}

第一、点击选中之后添加监听 进行所需要进行的操作
第二、在对index进行了新的赋值之后 刷新ListView
第三、如果position 和 index 相等 那么设置为以点击状态 否则未点击

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值