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 相等 那么设置为以点击状态 否则未点击