如何通过自定义在recyclerview中实现单个选择?我想要与ListView中的单个选择模式的行为相同。
如果我在这里了解您想要的样本:
public class SingleCheckAdapter extends RecyclerView.Adapter<SingleCheckAdapter.SingleCheckViewHolder> {
private int mSelectedItem = -1;
private List<PersonItem> mSingleCheckList;
private Context mContext;
private AdapterView.OnItemClickListener onItemClickListener;
public SingleCheckAdapter(Context context, List<PersonItem> listItems) {
mContext = context;
mSingleCheckList = listItems;
}
@Override
public SingleCheckViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
LayoutInflater inflater = LayoutInflater.from(mContext);
final View view = inflater.inflate(R.layout.item_single_check, viewGroup, false);
return new SingleCheckViewHolder(view, this);
}
@Override
public void onBindViewHolder(SingleCheckViewHolder viewHolder, final int position) {
PersonItem item = mSingleCheckList.get(position);
try {
viewHolder.setDateToView(item, position);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public int getItemCount() {
return mSingleCheckList.size();
}
public void setOnItemClickListener(AdapterView.OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
public void onItemHolderClick(SingleCheckViewHolder holder) {
if (onItemClickListener != null)
onItemClickListener.onItemClick(null, holder.itemView, holder.getAdapterPosition(), holder.getItemId());
}
class SingleCheckViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private SingleCheckAdapter mAdapter;
private RadioButton mRadio;
private TextView mText;
public SingleCheckViewHolder(View itemView, final SingleCheckAdapter mAdapter) {
super(itemView);
this.mAdapter = mAdapter;
mText = (TextView) itemView.findViewById(R.id.text);
mRadio = (RadioButton) itemView.findViewById(R.id.radio);
itemView.setOnClickListener(this);
mRadio.setOnClickListener(this);
}
public void setDateToView(PersonItem item, int position) throws Exception {
mRadio.setChecked(position == mSelectedItem);
mText.setText(item.getPersonName());
}
@Override
public void onClick(View v) {
mSelectedItem = getAdapterPosition();
notifyItemRangeChanged(0, mSingleCheckList.size());
mAdapter.onItemHolderClick(SingleCheckViewHolder.this);
}
}
}
这不是我的工作。信用nandagopalr进行单选择性recyclerview