Android 入门第四讲03-列表RecyclerView(RecyclerView使用步骤(详),RecyclerView指定一行item的数目+指定一行item的数量,并且设置列表方向)


Android 入门第四讲02-列表ListView(ListView item高度问题,ListView控件缺点,ListView控件优化(面试常问问题),ListView控件二次优化)

RecyclerView特点
1.RecyclerView相当于优化过后的ListView,强制开发者使用优化
2.RecyclerView可以简单实现一行多个item
3.RecyclerView还能实现横向滚动

1.RecyclerView使用步骤(详)

第一步,引入RecyclerView控件

方法一:到可视化界面下载RecyclerView(点击下载,然后会弹窗,再点击ok,加载一会就会下载成功)
在这里插入图片描述
方法二:添加依赖包

 implementation 'androidx.recyclerview:recyclerview:1.1.0'

在这里插入图片描述

第二步,在布局文件添加RecyclerView

注意是RecyclerView,不是RecycleListView
在这里插入图片描述
在这里插入图片描述
布局文件代码

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    

</androidx.constraintlayout.widget.ConstraintLayout>

第三步,创建layout 布局文件item

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="200dp">



        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="42dp"
            android:layout_marginLeft="42dp"
            android:layout_marginTop="25dp"
            android:text="TextView"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="56dp"
            android:layout_marginLeft="56dp"
            android:layout_marginTop="58dp"
            android:text="TextView"
            app:layout_constraintStart_toEndOf="@+id/textView"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/textView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="25dp"
            android:layout_marginEnd="26dp"
            android:layout_marginRight="26dp"
            android:text="TextView"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>

第四步,创建实体类Chat

在这里插入图片描述
在这里插入图片描述
代码


public class Chat {
    public String name;
    public String content;
    public String time;
}

第五步,编写RecyclerView的Holder

RecyclerView的逻辑操作和ListView类似,都需要一个类,但是定义类上RecyclerView有点不同,需要继承一个ViewHolder (RecyclerView Holder写法)
在这里插入图片描述
选择第一个,创建构造方法
在这里插入图片描述
然后再添加成员变量,并且初始化
在这里插入图片描述

注意:RecyclerView是先写Holder再写adapter

第六步,写RecyclerView的adapter

写RecyclerView的adapter,首先要继承一个adapter类,注意要放一个泛型参数(这里放我们刚写的Myholder),
在这里插入图片描述
选择第一个重写三个方法
在这里插入图片描述
在这里插入图片描述
编写adapter,(和ListView类似)

  1. 写条目数量
  2. 加载view
  3. 控件赋值

在这里插入图片描述

第七步,显示RecyclerView视图

添加代码表示RecyclerView采用一种线性方式来排列,一行显示一个
在这里插入图片描述
运行成功
在这里插入图片描述
activity代码


public class MainActivity extends AppCompatActivity {



    RecyclerView mRecyclerView;
    MyAdapter mMyAdapter;
    List<Chat> list=new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mRecyclerView=findViewById(R.id.recyclerView);//实例化
        for (int i=0;i<100;i++){

            Chat chat=new Chat();
            chat.name="name :"+ i;
            chat.content="content :"+ i;
            chat.time="time :"+ i;
            list.add(chat);

        }
       mMyAdapter = new MyAdapter();
        mRecyclerView.setAdapter(mMyAdapter);
        //表示RecyclerView采用一种线性方式来排列,一行显示一个
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    }

     public class MyAdapter extends RecyclerView.Adapter<MyHolder>{

         @NonNull
         @Override
         public MyHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view= LayoutInflater.from(MainActivity.this).inflate(R.layout.item,parent,false);//加载view
             MyHolder myHolder=new MyHolder(view);//返回view
             return myHolder;
         }

         @Override
         public void onBindViewHolder(@NonNull MyHolder holder, int position) {
             Chat chat=list.get(position);
             holder.textView.setText(chat.name);
             holder.textView1.setText(chat.content);
             holder.textView2.setText(chat.time);


         }

         @Override
         public int getItemCount() {
             return list.size();
         }
     }

    public  static class MyViewHolder{
        TextView textView;//成员变量
        TextView textView1;
        TextView textView2;
    }

    //RecyclerView  Holder写法
    public class MyHolder extends RecyclerView.ViewHolder{
        TextView textView;//成员变量
        TextView textView1;
        TextView textView2;
         public MyHolder(@NonNull View itemView) {
            super(itemView);
             textView=itemView.findViewById(R.id.textView);
             textView1=itemView.findViewById(R.id.textView2);
             textView2=itemView.findViewById(R.id.textView3);

        }
    }

}

2.RecyclerView指定一行item的数目

这里我们指定一行显示两个
在这里插入图片描述
代码

        mRecyclerView.setLayoutManager(new GridLayoutManager(this,2));//可指定一行item的数目

3.RecyclerView指定一行item的数量,并且设置列表的方向

在这里插入图片描述
代码

        mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.HORIZONTAL));//可以表述一行显示item的数量,并且可以设置列表的方向

小伙伴,今天的RecyclerView就讲完啦,是不是比LIstView简单多了,而且更加高级和实用,谢谢您的阅读
Android 入门第四讲04-小结-RecyclerView(回顾)+Context(介绍和结构)+Application(创建和作用)
博主为了可以学到更多的Android知识,创建了一个安卓知识交流群,欢迎大佬入群,当然也欢迎和我一样的安卓小白,我们可以一起交流,最重要的是快乐水群,记得定个小目标,冲击bat

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rose J

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值