/泛型要写RecyclerView的ViewHolder public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context context; private ArrayList<String> list; //定义两种类型 private final int TYPE_0=0; private final int TYPE_1=1; //在create里判断item的类型 @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //判断类型 if (viewType == TYPE_0){ //初始化布局 View view = LayoutInflater.from(context).inflate(R.layout.rev_content_layout, null); final MyViewHolder holder = new MyViewHolder(view); //设置点击事件 view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = holder.getLayoutPosition(); ItemCleck.setItemCleck(v,position); } }); return holder; //判断类型 }else if(viewType == TYPE_1){ //初始化布局 View view1= LayoutInflater.from(context).inflate(R.layout.list_layout,null); final MyViewHolder1 holder1 = new MyViewHolder1(view1); //设置点击事件 view1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = holder1.getLayoutPosition(); ItemCleck.setItemCleck(v,position); } }); return holder1; } return null; } //赋值 @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { //要判断属于哪个ViewHolder才会点到属性 if (holder instanceof MyViewHolder){ ((MyViewHolder) holder).tv.setText(list.get(position)); } else if (holder instanceof MyViewHolder1) { ((MyViewHolder1) holder).tv1.setText(list.get(position)); } } //判断item是哪种类型的条件 @Override public int getItemViewType(int position) { if (position%3 ==0){ return TYPE_0; }else{ return TYPE_1; } } @Override public int getItemCount() { return list.size(); } //构造器 public MyAdapter(Context context, ArrayList<String> list) { this.context = context; this.list = list; } //接口回掉:recyclerView的点击事件 private OnItemCleck ItemCleck; public interface OnItemCleck{ void setItemCleck(View v,int position); } public void setOnItemCleckListener(OnItemCleck itemCleck) { ItemCleck = itemCleck; } public class MyViewHolder extends RecyclerView.ViewHolder{ TextView tv; public MyViewHolder(View itemView) { super(itemView); tv = (TextView) itemView.findViewById(R.id.content_text); } } public class MyViewHolder1 extends RecyclerView.ViewHolder{ TextView tv1; public MyViewHolder1(View itemView) { super(itemView); tv1 = (TextView) itemView.findViewById(R.id.text_1); } } }
多条目加监听事件
最新推荐文章于 2022-02-07 23:38:03 发布