Recyclerview 小demo

本文详细介绍了如何在Android应用中使用RecyclerView,包括自定义Adapter、ViewHolder的创建、数据绑定及实现点击事件的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
先看一下demo结构
在这里插入图片描述
activity_main.xml中加入一个RecyclerView让它充满全屏;
在这里插入图片描述
layout_item.xml中加入一个TextView和ImgView;
在这里插入图片描述
然后新建Bean实体类
在这里插入图片描述

Recyvlerview_Adapte中的代码

package com.example.wh.test;

import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.List;

/**
 * Created by Wh on 2019/1/17.
 */
//继承recyclerview.adapter,<>中是ViewHolder,viewholder是缓存用的,也就是说将view holder的缓存加到<>中
public class Recyvlerview_Adapter extends RecyclerView.Adapter<Recyvlerview_Adapter.ViewHolder>{
    private List<Bean> beanList;

    //构造方法,将beanList1赋给beanList
    public Recyvlerview_Adapter(List<Bean> beanList1) {
        this.beanList=beanList1;
    }

    class ViewHolder extends RecyclerView.ViewHolder{  //用于缓存的ViewHolder
        TextView myTv;
        ImageView myImg;
        View myView;  //自定义View用于recyclerview的点击事件
        public ViewHolder(View itemView) {
            super(itemView);
            myView=itemView;//将itemView赋给myView
            myImg=itemView.findViewById(R.id.img);
            myTv=itemView.findViewById(R.id.tv);
        }
    }

    @NonNull

    @Override
    //创建viewholder实例
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_item,parent,false);//在此方法中先加载布局
        final ViewHolder viewHolder=new ViewHolder(view);//将布局传入viewholder对象中
        //点击item的监听器
        viewHolder.myView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int postion=viewHolder.getAdapterPosition();//获取到当前点击的是哪一个item
                Bean bean=beanList.get(postion);//将当前点击的item赋给实体类对象
                Toast.makeText(v.getContext(), "你动了"+bean.getMyName()+"一下", Toast.LENGTH_LONG).show();
            }
        });
        //点击item中某一个控件的监听器
        viewHolder.myImg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int postion=viewHolder.getAdapterPosition();
                Bean bean=beanList.get(postion);
                Toast.makeText(v.getContext(), "你动了"+bean.getMyName()+"的图片一下", Toast.LENGTH_LONG).show();
            }
        });
        return viewHolder;//将带有布局的viewholder对象返回
    }

    @Override
    //用于对Recyclerview的子项(item)进行赋值
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        Bean bean=beanList.get(position);//创建实体类对象 并拿到当前的子项(item)
        holder.myTv.setText(bean.getMyName());//设置当前的子项(item)
        holder.myImg.setImageResource(bean.getMyImg());
    }

    @Override
    //告诉recyclerview一共有多少子项(item)
    public int getItemCount() {
        return beanList.size();
    }


}

Recyvlerview_Adapter继承了RecyclerView.Adapter所以要重写3个方法:
onCreateViewHolder:用于创建ViewHolder实例
**onBindViewHolder:**用于对RecyclerView的子项(item)赋值
**getItemCount:**告诉RecyclerView有多少子项(item)

RecyclerView的点击事件:需要自定义View ,然后将ViewHolder的view传给自定义的View对象

在这里插入图片描述
最后看MainActivity:
在这里插入图片描述
效果图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
本人是初学小白,写博客主要是为了自己的查看复习,内容如有不准确,还请帮忙指出,多多谅解!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值