赞
踩
与ListView对比优势:
1.运行效率更高。
2.能实现横向滚动与瀑布流布局。
官方更加推荐Recycler控件,但因为后期加入又要使所有版本的Android都能使用,所以把它放入了support库当中,所以使用的第一步,是在项目的build.gradle中添加相应的依赖库。
打开app/build.gradle文件,在dependencies中添加
implementation 'com.android.support:recyclerview-v7:28.0.0'
不同项目不同版本的依赖库版本号不同,截图给大家参考下我现在的,不必模仿:
点击Sync Now同步。
那么如何使用这个控件呢?点击activity_main.xml,修改代码:
- <?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/recycler_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:ignore="MissingConstraints" />
-
- </androidx.constraintlayout.widget.ConstraintLayout>
中间的这段代码,就是调用RecyclerView控件。因为它并不是内置在SDK中的控件,所以使用时要写出完整的路径名。
接下来我们以水果列表显示为例分别实现四个功能,每个功能讲解结束都会附上Demo,请自行下载:
1:实现纵向滚动
2:实现横向滚动
3:实现瀑布流布局
4:实现recyclerView点击事件
功能一:实现纵向滚动
先创建一个Fruit类Fruit.java,代码如下:
- package com.example.recyclerviewtest;
-
- public class Fruit {
- private String name;
- private int imageId;
-
- public Fruit(String name, int imageId) {
- this.name = name;
- this.imageId = imageId;
- }
-
- public String getName() {
- return name;
- }
-
- public int getImageId() {
- return imageId;
- }
- }
再创建对于一个水果,它的单个布局文件fruit_item.xml。
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
-
- <ImageView
- android:id="@+id/fruit_image"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"/>
-
- <TextView
- android:id="@+id/fruit_name"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:layout_marginLeft="10dp"/>
-
- </LinearLayout>
接下来为RecyclerView准备一个适配器,新建FruitAdapter类文件FruitAdapter.java,让这个个适配器继承自RecyclerView.Adapter,并将泛型指定为FruitAdapter.ViewHolder。其中ViewHolder是我们在FruitAdapter中定义的一个内部类,代码如下:
- package com.example.recyclerviewtest;
-
- import android.media.Image;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.ImageView;
- import android.widget.TextView;
-
- import androidx.annotation.NonNull;
- import androidx.recyclerview.widget.RecyclerView;
-
- import org.w3c.dom.Text;
-
- import java.util.List;
-
- public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> {
-
- private List<Fruit> mFruitList;
-
- //传入view参数,这个参数就是RecyclerView的子项布局,这样就能找到里面各个控件的id
- static class ViewHolder extends RecyclerView.ViewHolder {
- ImageView fruitImage;
- TextView fruitName;
-
- public ViewHolder(@NonNull View itemView) {
- super(itemView);
- fruitImage = (ImageView)itemView.fi
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。