1.单选
adapter中:
public class AddGuanXiAdapter extends RecyclerView.Adapter<AddGuanXiAdapter.MyViewHolder> { private Context context; private List<FamilyBean> list; private int defItem = -1;//默认值 private OnItemListener onItemListener; public AddGuanXiAdapter(Context context, List<FamilyBean> list) { this.context = context; this.list = list; } public void setOnItemListener(OnItemListener onItemListener) { this.onItemListener = onItemListener; } public interface OnItemListener { void onClick(View v, int pos, String projectc); } public void setDefSelect(int position) { this.defItem = position; notifyDataSetChanged(); } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { MyViewHolder holder = new MyViewHolder(LayoutInflater.from( context).inflate(R.layout.add_qinqing_item, parent, false)); return holder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.tv.setText(list.get(position).getNickName()); if (defItem != -1) { if (defItem == position) { holder.tv.setTextColor(Color.parseColor("#ffffff")); holder.tv.setBackgroundResource(R.drawable.price_queren_shape); } else { holder.tv.setTextColor(Color.parseColor("#4c4c4c")); holder.tv.setBackgroundResource(R.drawable.fef1f1_shape); } } } @Override public int getItemCount() { return list.size(); } /** * ViewHolder的类,用于缓存控件 */ class MyViewHolder extends RecyclerView.ViewHolder { TextView tv; public MyViewHolder(View view) { super(view); tv = (TextView) view.findViewById(R.id.tv_guanxi); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (onItemListener != null) { onItemListener.onClick(v, getLayoutPosition(), list.get(getLayoutPosition()).getNickName()); } } }); } } }
activity中调用:
adapter.setOnItemListener(new AddGuanXiAdapter.OnItemListener() { @Override public void onClick(View v, int pos, String projectc) { adapter.setDefSelect(pos); relationship = list.get(pos).getNickName(); } });
2.多选
adapter中这个是在adapter中直接设置控件的点击事件:
public class FangWuZDLBAdapter extends RecyclerView.Adapter<FangWuZDLBAdapter.MyViewHolder> { private Context context; private List<FangWuZDLBBean.ItemsBean> list; private OnItemListener onItemListener; public static HashMap<Integer, Boolean> isSelected; public FangWuZDLBAdapter(Context context, List<FangWuZDLBBean.ItemsBean> items) { this.context = context; this.list = items; init(); } // 初始化 设置所有item都为未选择 public void init() { isSelected = new HashMap<Integer, Boolean>(); for (int i = 0; i < list.size(); i++) { isSelected.put(i, false); } } public interface OnItemListener { void onClick(View v, int pos, String projectc); } public void setOnItemListener(OnItemListener onItemListener) { this.onItemListener = onItemListener; } @NonNull @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { MyViewHolder holder = new MyViewHolder(LayoutInflater.from( context).inflate(R.layout.fw_zhangdan_item, parent, false)); return holder; } @Override public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { //CheckBox点击事件 holder.mCheckBox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!isSelected.get(position)) { isSelected.put(position, true); notifyItemChanged(position); EventBus.getDefault().post(new SelectEventX("1", position + "")); } else { isSelected.put(position, false); notifyItemChanged(position); EventBus.getDefault().post(new SelectEventX("2", position + "")); } } }); holder.mCheckBox.setChecked(isSelected.get(position)); } @Override public int getItemCount() { return list.size(); } /** * ViewHolder的类,用于缓存控件 */ class MyViewHolder extends RecyclerView.ViewHolder { TextView tv_num, tv_yehzu, tv_wuye_fei, tv_jinqian; CheckBox mCheckBox; public MyViewHolder(View view) { super(view); tv_num = view.findViewById(R.id.tv_num); tv_yehzu = view.findViewById(R.id.tv_yehzu); tv_wuye_fei = view.findViewById(R.id.tv_wuye_fei); tv_jinqian = view.findViewById(R.id.tv_jinqian); mCheckBox = view.findViewById(R.id.checkbox); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (onItemListener != null) { onItemListener.onClick(v, getLayoutPosition(), list.get(getLayoutPosition()).getBname()); } } }); } } }
CheckBox的布局文件:
<CheckBox android:id="@+id/checkbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="false" android:layout_marginLeft="@dimen/dp_10" android:button="@drawable/checkbox_style" android:focusable="false" android:focusableInTouchMode="false"/>
checkbox_style布局文件
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/protocol_sel1" android:state_checked="true"/> <item android:drawable="@drawable/protocol_unsel1" android:state_checked="false"/> <item android:drawable="@drawable/protocol_unsel1"/> </selector>