当前位置:   article > 正文

RecyclerView控件讲解(实现纵向/横向滚动以及瀑布流布局)_recyclerview 实现横向瀑布流

recyclerview 实现横向瀑布流

与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,修改代码:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. tools:context=".MainActivity">
  8. <androidx.recyclerview.widget.RecyclerView
  9. android:id="@+id/recycler_view"
  10. android:layout_width="match_parent"
  11. android:layout_height="match_parent"
  12. tools:ignore="MissingConstraints" />
  13. </androidx.constraintlayout.widget.ConstraintLayout>

中间的这段代码,就是调用RecyclerView控件。因为它并不是内置在SDK中的控件,所以使用时要写出完整的路径名。

接下来我们以水果列表显示为例分别实现四个功能,每个功能讲解结束都会附上Demo,请自行下载:

1:实现纵向滚动

2:实现横向滚动

3:实现瀑布流布局

4:实现recyclerView点击事件

功能一:实现纵向滚动

  先创建一个Fruit类Fruit.java,代码如下:

  1. package com.example.recyclerviewtest;
  2. public class Fruit {
  3. private String name;
  4. private int imageId;
  5. public Fruit(String name, int imageId) {
  6. this.name = name;
  7. this.imageId = imageId;
  8. }
  9. public String getName() {
  10. return name;
  11. }
  12. public int getImageId() {
  13. return imageId;
  14. }
  15. }

  再创建对于一个水果,它的单个布局文件fruit_item.xml。

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="wrap_content">
  5. <ImageView
  6. android:id="@+id/fruit_image"
  7. android:layout_width="wrap_content"
  8. android:layout_height="wrap_content"/>
  9. <TextView
  10. android:id="@+id/fruit_name"
  11. android:layout_width="wrap_content"
  12. android:layout_height="wrap_content"
  13. android:layout_gravity="center_vertical"
  14. android:layout_marginLeft="10dp"/>
  15. </LinearLayout>

接下来为RecyclerView准备一个适配器,新建FruitAdapter类文件FruitAdapter.java,让这个个适配器继承自RecyclerView.Adapter,并将泛型指定为FruitAdapter.ViewHolder。其中ViewHolder是我们在FruitAdapter中定义的一个内部类,代码如下:

  1. package com.example.recyclerviewtest;
  2. import android.media.Image;
  3. import android.view.LayoutInflater;
  4. import android.view.View;
  5. import android.view.ViewGroup;
  6. import android.widget.ImageView;
  7. import android.widget.TextView;
  8. import androidx.annotation.NonNull;
  9. import androidx.recyclerview.widget.RecyclerView;
  10. import org.w3c.dom.Text;
  11. import java.util.List;
  12. public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> {
  13. private List<Fruit> mFruitList;
  14. //传入view参数,这个参数就是RecyclerView的子项布局,这样就能找到里面各个控件的id
  15. static class ViewHolder extends RecyclerView.ViewHolder {
  16. ImageView fruitImage;
  17. TextView fruitName;
  18. public ViewHolder(@NonNull View itemView) {
  19. super(itemView);
  20. fruitImage = (ImageView)itemView.fi
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/174674?site
推荐阅读
相关标签
  

闽ICP备14008679号