• 同一页面实现recycleView三种布局【recycleView + adapter】





    在这里插入图片描述


    🥭🥭简介

    分享一下recycleView在同一个页面中(一个recycleView中实现三种不同的布局方式)。三种布局一种是横着划,竖着划和GridView三种布局,代码全部粘在下面了,需要自取。

    🍓🍓第一种是竖着滑动,和listView差不多。自我感觉,比ListView复杂。
    🍓🍓第二种是横着滑。自我感觉,ListView虽然也可以实现,但是比起RecycleView难度和繁琐度都上了一个等级。这可能也是现在大部分人都用RecycleView的原因之一吧,当然recycleView还有很多优势。
    🍓🍓第三种就是gridView布局了,也就是Android中常说的九宫格布局了。

    RecycleView它可以实现与ListView和GridView一样的效果,提供了一种插拔式的体验,高度的解耦,异常的灵活,adpter适配器自己定制。只需设置其提供的不同的LayoutManager,ItemAnimator和ItemDecoration,就能实现不同的效果。

    🍓🍓 RecyclerView的优点
    🍗🍗1、支持局部刷新。
    🍗🍗2、可以自定义item增删时的动画。
    🍗🍗3、能够实现item拖拽和侧滑删除等功能。
    🍗🍗4、默认已实现View的复用,而且回收机制更加完善。



    🥭🥭效果图

    待写。。。。。。



    🥭🥭代码

    🍎🍎三个Adapter修饰器

    FruitAdapter

    package Adapter;
    
    
    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 com.example.layout_test.R;
    
    import org.jetbrains.annotations.NotNull;
    import java.util.List;
    
    import domain.FuritBean;
    
    public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> {
    
        private List<FuritBean> mFruitList;
        static class ViewHolder extends RecyclerView.ViewHolder{
    
    
            private final ImageView mfruitImage;
            private final TextView mfruitName;
    
            public ViewHolder(@NonNull @NotNull View view) {
                super(view);
                mfruitImage=view.findViewById(R.id.mImg1);
                mfruitName=view.findViewById(R.id.mTv1);
    
            }
        }
        public FruitAdapter(List<FuritBean> fruitList){
            mFruitList=fruitList;
        }
    
        @NonNull
        @NotNull
        @Override
        public ViewHolder onCreateViewHolder(@NonNull @NotNull ViewGroup parent, int viewType) {
            View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.recycle_item1,parent,false);
            ViewHolder holder=new ViewHolder(view);
    
            return holder;
        }
    
        @Override
        public void onBindViewHolder(@NonNull @NotNull FruitAdapter.ViewHolder holder, int position) {
            FuritBean furit=mFruitList.get(position);
            holder.mfruitImage.setImageResource(furit.getImageId());
            holder.mfruitName.setText(furit.getName());
    
        }
    
        @Override
        public int getItemCount() {
            return mFruitList.size();
        }
    
    
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66

    FruitAdapter2

    package Adapter;
    
    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 com.example.layout_test.R;
    
    import org.jetbrains.annotations.NotNull;
    
    import java.util.List;
    
    import domain.FuritBean;
    
    public class FuritAdapter2 extends RecyclerView.Adapter<FuritAdapter2.ViewHolder> {
        private List<FuritBean> mFruitList;
    
        static class ViewHolder extends RecyclerView.ViewHolder{
            private final ImageView mfruitImage;
            private final TextView mfruitName;
    
            public ViewHolder(@NonNull @NotNull View itemView) {
                super(itemView);
                mfruitImage= itemView.findViewById(R.id.mImg2);
                mfruitName = itemView.findViewById(R.id.mTv2);
    
    
            }
        }
    
        public FuritAdapter2(List<FuritBean> mFruitList) {
            this.mFruitList = mFruitList;
        }
    
        @NonNull
        @Override
        public FuritAdapter2.ViewHolder onCreateViewHolder(@NonNull @NotNull ViewGroup parent, int viewType) {
            View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.recycle_item2,parent,false);
            ViewHolder viewHolder=new ViewHolder(view);
            return viewHolder;
        }
    
        @Override
        public void onBindViewHolder(@NonNull @NotNull FuritAdapter2.ViewHolder holder, int position) {
            FuritBean furit=mFruitList.get(position);
            holder.mfruitImage.setImageResource(furit.getImageId());
            holder.mfruitName.setText(furit.getName());
        }
    
        @Override
        public int getItemCount() {
            return mFruitList.size();
        }
    
    
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62

    FruitAdapter3

    package Adapter;
    
    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 com.example.layout_test.R;
    
    import org.jetbrains.annotations.NotNull;
    
    import java.util.List;
    
    import domain.FuritBean;
    
    public class FuritAdapter3 extends RecyclerView.Adapter<FuritAdapter3.ViewHolder> {
        private List<FuritBean> mFruitList;
    
        static class ViewHolder extends RecyclerView.ViewHolder{
            private final ImageView mfruitImage;
            private final TextView mfruitName;
    
            public ViewHolder(@NonNull @NotNull View itemView) {
                super(itemView);
                mfruitImage= itemView.findViewById(R.id.mImg3);
                mfruitName = itemView.findViewById(R.id.mTv3);
    
    
            }
        }
    
        public FuritAdapter3(List<FuritBean> mFruitList) {
            this.mFruitList = mFruitList;
        }
    
        @NonNull
        @Override
        public FuritAdapter3.ViewHolder onCreateViewHolder(@NonNull @NotNull ViewGroup parent, int viewType) {
            View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.recycle_item3,parent,false);
            ViewHolder viewHolder=new ViewHolder(view);
            return viewHolder;
        }
    
        @Override
        public void onBindViewHolder(@NonNull @NotNull FuritAdapter3.ViewHolder holder, int position) {
            FuritBean furit=mFruitList.get(position);
            holder.mfruitImage.setImageResource(furit.getImageId());
            holder.mfruitName.setText(furit.getName());
        }
    
        @Override
        public int getItemCount() {
            return mFruitList.size();
        }
    
    
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    三个Adapter修饰器修饰了不同的布局,每一个布局都是单独修饰的,当然也可以放到一个布局里面。下面一篇文章会将所有的布局放在一个Adapter修饰器里面进行。



    MainActivity

    🍎🍎主界面函数 && FuritBean

    package com.example.layout_test;
    
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.recyclerview.widget.GridLayoutManager;
    import androidx.recyclerview.widget.LinearLayoutManager;
    import androidx.recyclerview.widget.RecyclerView;
    
    import android.Manifest;
    import android.icu.text.UnicodeSetSpanner;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import com.google.android.material.tabs.TabLayout;
    
    import org.w3c.dom.Text;
    
    import java.util.ArrayList;
    import java.util.List;
    
    //import Adapter.AllAdapter;
    //import Adapter.AllAdapter;
    import Adapter.FruitAdapter;
    import Adapter.FuritAdapter2;
    import Adapter.FuritAdapter3;
    import domain.FuritBean;
    public class MainActivity extends AppCompatActivity{
        private List<FuritBean> furitBeans= new ArrayList();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            initData();
            /**
             * todo  ListView   滑动
             */
            // recycleView  横着滑
            RecyclerView recyclerView1=findViewById(R.id.recycle_view1);
            LinearLayoutManager layoutManager2=new LinearLayoutManager(this);
            layoutManager2.setOrientation(LinearLayoutManager.HORIZONTAL);
            recyclerView1.setLayoutManager(layoutManager2);
            FuritAdapter2 furitAdapter2=new FuritAdapter2(furitBeans);
            recyclerView1.setAdapter(furitAdapter2);
    
    
            // recycleView  竖着划
            RecyclerView recyclerView=findViewById(R.id.recycle_view2);
            LinearLayoutManager layoutManager=new LinearLayoutManager(this);
            recyclerView.setLayoutManager(layoutManager);
            FruitAdapter fruitAdapter=new FruitAdapter(furitBeans);
            recyclerView.setAdapter(fruitAdapter);
    
    
            /**
             * todo  GridView   RecycleView  九宫格
             */
            RecyclerView recyclerView3=findViewById(R.id.recycle_view3);
            GridLayoutManager gridLayoutManager=new GridLayoutManager(this,4);
            recyclerView3.setLayoutManager(gridLayoutManager);
            FuritAdapter3 adapter=new FuritAdapter3(furitBeans);
            recyclerView3.setAdapter(adapter);
        }
    
    
    
        //   数据
        private void initData() {
            for (int i = 0; i <= 4; i++) {
                FuritBean furitBean=new FuritBean("cm",R.drawable.cm);
                furitBeans.add(furitBean);
    
                FuritBean furitBean1=new FuritBean("cz",R.drawable.cz);
                furitBeans.add(furitBean1);
    
                FuritBean furitBean2=new FuritBean("mht",R.drawable.mht);
                furitBeans.add(furitBean2);
    
                FuritBean furitBean3=new FuritBean("nyg",R.drawable.nyg);
                furitBeans.add(furitBean3);
    
                FuritBean furitBean4=new FuritBean("pg",R.drawable.pg);
                furitBeans.add(furitBean4);
    
                FuritBean furitBean5=new FuritBean("pt",R.drawable.pt);
                furitBeans.add(furitBean5);
    
                FuritBean furitBean6=new FuritBean("sl",R.drawable.sl);
                furitBeans.add(furitBean6);
    
                FuritBean furitBean7=new FuritBean("yt",R.drawable.yt);
                furitBeans.add(furitBean7);
            }
    
    
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102

    FuritBean

    package domain;
    
    public class FuritBean {
        private String name;
        private int ImageId;
    
        public String getName() {
            return name;
        }
    
    
        public int getImageId() {
            return ImageId;
        }
    
    
    
    
        public FuritBean(String name, int imageId) {
            this.name = name;
            ImageId = imageId;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24


    🍎🍎布局文件

    activity_main

    
    <LinearLayout 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=".MainActivity"
        android:orientation="vertical">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="80dp"
            android:orientation="vertical">
    
            <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/recycle_view1"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />
        LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="400dp">
            <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/recycle_view2"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>
        LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
            <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/recycle_view3"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginLeft="40dp"/>
    
        LinearLayout>
    
    LinearLayout>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    recycle_item1

    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal">
    
            <ImageView
                android:id="@+id/mImg1"
                android:layout_width="50dp"
                android:layout_height="50dp" />
    
            <TextView
                android:id="@+id/mTv1"
                android:layout_width="match_parent"
                android:layout_height="30dp"
                android:gravity="center"
                android:layout_gravity="center"/>
        LinearLayout>
    LinearLayout>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    recycle_item2

    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <LinearLayout
            android:layout_width="50dp"
            android:layout_height="80dp"
            android:orientation="vertical">
    
            <ImageView
                android:id="@+id/mImg2"
                android:layout_width="50dp"
                android:layout_height="50dp" />
    
            <TextView
                android:id="@+id/mTv2"
                android:layout_width="50dp"
                android:layout_height="30dp"
                android:gravity="center"/>
        LinearLayout>
    
    LinearLayout>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    recycle_item3

    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_gravity="center">
    
            <ImageView
                android:id="@+id/mImg3"
                android:layout_width="50dp"
                android:layout_height="50dp" />
    
            <TextView
                android:id="@+id/mTv3"
                android:layout_width="50dp"
                android:layout_height="30dp"
                android:gravity="center"
                android:textColor="#FFFF0000"/>
        LinearLayout>
    
    LinearLayout>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26


    🥭🥭资源文件

    在这里插入图片描述

    嗯~~,就几张照片,放上来还有水印,你们这个照片就自己找找吧。


    把上面的代码全部拷贝下来就可以运行出上动态图的结果了。

  • 相关阅读:
    PGL图学习之基于UniMP算法的论文引用网络节点分类任务[系列九]
    宝塔Linux面板 软件商店中安装不了任何php版本的解决方法
    数据集读取与划分
    大话STL第十期终章——算法
    round 931 div2 B题Yet Another Coin Problem补题
    java-php-python-互联网保险网站计算机毕业设计
    【剑指Offer】:循环有序列表的插入(涉及链表的知识)
    Node.js学习一 —— 模块化
    并发编程day01
    sqlite3 — DB-API 2.0 interface for SQLite databases
  • 原文地址:https://blog.csdn.net/qq_46906413/article/details/126041813