在Recyclerview中实现单一选择



如何通过自定义在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

最新更新