• Android学习笔记 17. RecyclerView


    Android学习笔记

    Android基础开发——RecyclerView

    17. RecyclerView

    17.1 导包
    implementation 'androidx.recyclerview:recyclerview:1.2.1'
    
    • 1

    在这里插入图片描述

    17.2 Bean类与ListView相同
    package com.dingjiaxiong.myrecyclerview;
    
    public class Bean {
    
        String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    17.3 主布局
    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        >
    
        <androidx.recyclerview.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/rv"
            />
    
    LinearLayout>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    17.4 item布局

    在这里插入图片描述

    
    
    
        
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    与ListView的item一样

    17.5 生成数据

    在这里插入图片描述

    17.6 辅助类——Adapter
    package com.dingjiaxiong.myrecyclerview;
    
    import android.content.Context;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    
    import androidx.annotation.NonNull;
    import androidx.recyclerview.widget.RecyclerView;
    
    import java.util.List;
    
    public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
    
        //传入数据
        private List<Bean> data;
        private Context context;
    
        public MyAdapter(List<Bean> data, Context context) {
            this.data = data;
            this.context = context;
        }
    
        @NonNull
        @Override
        public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = View.inflate(context, R.layout.recyclerview_item, null);
            return new MyViewHolder(view);
        }
    
        @Override
        public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
            //绑定数据
            holder.tv.setText(data.get(position).getName());
        }
    
        @Override
        public int getItemCount() {
            return data == null ? 0 : data.size();
        }
    
        public class MyViewHolder extends RecyclerView.ViewHolder {
    
            private TextView tv;
    
            public MyViewHolder(@NonNull View itemView) {
                super(itemView);
                tv = itemView.findViewById(R.id.tv);
            }
        }
    }
    
    • 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
    17.7 配置
    package com.dingjiaxiong.myrecyclerview;
    
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.recyclerview.widget.LinearLayoutManager;
    import androidx.recyclerview.widget.RecyclerView;
    
    import android.os.Bundle;
    import android.view.View;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class MainActivity extends AppCompatActivity {
    
        private List<Bean> data = new ArrayList<>();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            for(int i = 0 ; i < 100 ; i++){
                Bean bean = new Bean();
                bean.setName("dingjiaxiong" + i);
                data.add(bean);
            }
    
            RecyclerView recyclerView = findViewById(R.id.rv);
    
            //设置布局
            LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
            recyclerView.setLayoutManager(linearLayoutManager);
    
            MyAdapter myAdapter = new MyAdapter(data, this);
    
            recyclerView.setAdapter(myAdapter);
    
        }
    }
    
    • 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

    运行

    在这里插入图片描述

    17.8 网格的Manager
    GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
    recyclerView.setLayoutManager(gridLayoutManager);
    
    • 1
    • 2

    在这里插入图片描述

    17.9 瀑布流布局
    StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(3, LinearLayout.VERTICAL);
    recyclerView.setLayoutManager(staggeredGridLayoutManager);
    
    • 1
    • 2

    在这里插入图片描述

    改下数据

    在这里插入图片描述

    在这里插入图片描述

    使用网格布局显示

    在这里插入图片描述

    17.10 item点击事件

    默认没有提供

    1. 创建接口

    2. 设置监听

      在这里插入图片描述

    3. 使用

      myAdapter.setRecyclerItemClickListener(new MyAdapter.OnRecyclerItemClickListener() {
          @Override
          public void OnRecycleItemClick(int position) {
              Log.e("dingjiaxiong", "OnRecycleItemClick: " + position);
          }
      });
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

      在这里插入图片描述

    运行

    在这里插入图片描述

  • 相关阅读:
    【Python 实战基础】Pandas如何从字符串中解析某一数据,并统计多于一次的该数据
    6.1_4 Python3.x入门 P4 【基础】可变序列(列表list、字典dict、集合set)
    Explore EPF021D ADC微控制器
    微信公众号网页登录开发测试步骤详解
    图问题——深度遍历,广度遍历,并查集
    军队文职丨2022年武警部队面向社会公开招聘351名文职人员公告!高中学历可报,11月25日前报名!
    基于锁相环的直流电机控制系统simulink仿真
    【Android进阶】10、使用布局和部件创建 UI
    华为云云耀云服务器L实例评测|急速上手,零基础,两小时完成搭建属于自己的个人网站
    基金的利润分配与税收
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/126240094