RecyclerView

1.导依赖

2.写布局

3.写适配器

4.点击事件 是要写接口的,在Activity中调用的

第一步:

@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    //多条目
    if (i == TYPE_ONE) {
        View view = LayoutInflater.from(context).inflate(R.layout.item, viewGroup, false);
        MyViewHolder holder = new MyViewHolder(view);
        return holder;
    } else {
        View view1 = LayoutInflater.from(context).inflate(R.layout.item1, viewGroup, false);
        MyViewHolder1 holder1 = new MyViewHolder1(view1);
        return holder1;
    }
    /*View view = LayoutInflater.from(context).inflate(R.layout.item, viewGroup, false);
    MyViewHolder holder = new MyViewHolder(view);
    return holder;*/
}

//用holder来设置数据的
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int i) {
    // holder.name.setText(list.get(i));
    //多条目
    if (holder instanceof MyViewHolder) {
        ((MyViewHolder) holder).name.setText(list.get(i).getName());
        //简单化的点击事件
        /*((MyViewHolder) holder).name.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context, "你点击了文字", Toast.LENGTH_SHORT).show();
            }
        });*/
    }
    if (holder instanceof MyViewHolder1) {
        Picasso.with(context).load(list.get(i).getImage()).into(((MyViewHolder1) holder).image);
        //简单化点击事件
        /* ((MyViewHolder1) holder).image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context, "你点击了图片", Toast.LENGTH_SHORT).show();
            }
        });*/
    }
}

@Override
public int getItemCount() {
    return list == null ? 0 : list.size();
}

@Override
public int getItemViewType(int position) {
    if (position % 2 == 0) {
        return TYPE_ONE;
    } else {
        return TYPE_TWO;
    }
}

@Override
public void onClick(View v) {
    if (null != listener) {
        listener.onItemClick(v, (Integer) v.getTag());
    }
}

//第一个布局
class MyViewHolder extends RecyclerView.ViewHolder {
    public TextView name;

    //获取控件
    public MyViewHolder(View itemView) {
        super(itemView);
        name = itemView.findViewById(R.id.name);
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                listener.onItemClick(v, getAdapterPosition());
            }
        });
    }
}

//第二个布局
class MyViewHolder1 extends RecyclerView.ViewHolder {

    private final ImageView image;

    public MyViewHolder1(@NonNull View itemView) {
        super(itemView);
        image = itemView.findViewById(R.id.image);
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                listener.onItemClick(v, getAdapterPosition());
            }
        });

    }
}

private onRecyclerViewItemClickListener listener;

public void setOnItemClickListener(onRecyclerViewItemClickListener listener) {
    this.listener = listener;
}

//写个接口
public interface onRecyclerViewItemClickListener {
    void onItemClick(View view, int position);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值