RecyclerView:
优势:
提供了一种插拔式的体验,高度解耦,异常灵活
用法:
1.经过布局管理器LayoutManager控制其显示方式
2.经过ItemDecoration控制Item的间隔(可绘制)
3.经过ItemAnimator控制Item的增删动画
首先在build.gradle中添加依赖:android
implementation 'com.android.support:recyclerview-v7:28.0.0'
版本号因人而异,个人是28,而后创建item_view.xml,设置其子项显示的布局:app
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="80dp"> <TextView android:id="@+id/textView" android:gravity="center" android:layout_width="match_parent" android:layout_height="match_parent" /> </android.support.constraint.ConstraintLayout>
设置activity_main.xml:ide
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.fitsoft.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" /> </android.support.constraint.ConstraintLayout>
MainActivity:函数
package com.fitsoft; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; public class MainActivity extends AppCompatActivity { RecyclerView recyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = findViewById(R.id.recycler_view); //设置线性布局管理器 LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); recyclerView.setLayoutManager(linearLayoutManager); //设置适配器 MyAdapter myAdapter = new MyAdapter(); recyclerView.setAdapter(myAdapter); } private class MyAdapter extends RecyclerView.Adapter{ MyViewHolder viewHolder; @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { //绑定布局 View itemView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_view, viewGroup, false); //绑定布局里面的元素 //因为RecyclerView.ViewHolder是静态抽象类,不能实例化,只能新建一个类来继承 viewHolder = new MyViewHolder(itemView); return viewHolder; } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) { //这里的viewHolder其实就是咱们新建的MyViewHolder类的一个对象,这里进行强制转换 //数据的处理都在这个函数里面 ((MyViewHolder) viewHolder).textView.setText("编号:"+i); } @Override public int getItemCount() { //返回子项的个数 return 30; } private class MyViewHolder extends RecyclerView.ViewHolder{ //继承这个静态抽象类,使之能够被绑定 private TextView textView; MyViewHolder(@NonNull View itemView) { super(itemView); textView = itemView.findViewById(R.id.textView); } } } }
注释很详细。
效果图:布局