直接上源码吧自己看
这里是通过创建adapter的时候传进来的int数值来判断当前选中的是哪一个
publicRadioAdapter(Contextcontext,Listitems,intsign_type){
mContext=context;
mItems=items;
if(sign_type== -1){
mSelectedItem=mItems.get(mItems.size()-1).getSignType();
}else{
mSelectedItem=sign_type;
}
}
这里主要是做了一个反选的操作,因为做的单选的,当点击一个其他的要进行反选
public void onBindViewHolder(RadioAdapter.ViewHolder viewHolder, final int i) {
if (mItems.get(i).getSignType() == mSelectedItem) {
viewHolder.mRadio.setChecked(true);
} else {
viewHolder.mRadio.setChecked(false);
}
}
这里面是执行的点击和刷新数据的一个操作,当点击的时候获取当前的position,然后进行数据刷新
class ViewHolder extends RecyclerView.ViewHolder {
public RadioButton mRadio;
public TextView mText;
public ViewHolder(final View inflate) {
super(inflate);
mText = (TextView) inflate.findViewById(R.id.tv_autograph_text);
mRadio = (RadioButton) inflate.findViewById(R.id.iv_zedang);
View.OnClickListener clickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
mListener.onItemClickListener(v, getAdapterPosition());
mSelectedItem = mItems.get(getAdapterPosition()).getSignType();
notifyDataSetChanged();
}
};
itemView.setOnClickListener(clickListener);
mRadio.setOnClickListener(clickListener);
}
}