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>