Android RecyclerView使用入门介绍

目录
  • 添加 recycler 依赖
  • 设置单个列表项布局
    • 主布局中添加 recyclerview
  • RecyclerAdapter
  • 主 activity 注册
  • 成果图

添加 recycler 依赖

前往 build.gradle 下,添加以下依赖:

implementation 'androidx.recyclerview:recyclerview:1.2.1'

设置单个列表项布局

众所周知,一个完整的列表是由多个列表项组成的,而列表项可以使用布局文件进行定义;

我们简单的使用线性布局+一个 tv 组件定义列表项;

下方为布局文件 items.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"
    android:paddingRight="20dp"
    android:paddingLeft="20dp">
    <TextView
        android:id="@+id/item_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="8dp"
        android:padding="15dp"
        android:text="tools"
        android:textColor="#353434"
        android:textSize="20sp"/>
</LinearLayout>

主布局中添加 recyclerview

添加方式和 listview 基本一致,很简单:

<?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="match_parent">
    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

RecyclerAdapter

我们同样需要编写一个适配器来配置其对象关系;

新建适配器文件 RecyclerAdapter.kt

基本原理以及完善过程:

  1. 首先让主类继承 RecyclerView.Adapter ,泛型使用本类中的我们自建的 viewholder 方法
  2. 我们自创的 viewholder 方法需要继承 RecyclerView.ViewHolder
  3. 我们在 MyViewHolder 中直接获取列表项中的 TextView 组件
  4. 与此同时,我们还需要实现三个方法

onCreateViewHolder:选择使用哪一个 layout 作为 viewholder,并放回该 layout 组成的 viewholder

onBindViewHolder:针对 viewholder 内部组件的一些赋值与处理操作

getItemCount:列表项需要渲染几个?

class RecyclerAdapter(val context: Context) : RecyclerView.Adapter<RecyclerAdapter.MyViewHolder>() {
    inner class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) {
        val textView: TextView = view.findViewById(R.id.item_text)
    }
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
        val itemView = LayoutInflater.from(context).inflate(R.layout.items, parent, false)
        return MyViewHolder(itemView)
    }
    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        holder.textView.text = "this is $position"
    }
    override fun getItemCount(): Int {
        return 40
    }
}

主 activity 注册

初始化 recyclerview 的方式和 listview 差不多,只不过这里多设置了一个 layoutManager

依葫芦画瓢即可!

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        initRecycler()
    }
    fun initRecycler() {
        val adapter = RecyclerAdapter(this)
        val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
        recyclerView.adapter = adapter
        val layoutManager = LinearLayoutManager(this)
        layoutManager.orientation = RecyclerView.VERTICAL
        recyclerView.layoutManager = layoutManager
    }
}

成果图

到此这篇关于Android RecyclerView使用入门介绍的文章就介绍到这了,更多相关Android RecyclerView内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android获取RecyclerView滑动距离方法详细讲解

    先说能用的究极解决方案,大家着急的直接复制走,以后想了解再过来看 没有header,且所有Item的高度一致 private fun getScrollYDistance(recyclerView: RecyclerView): Int? { kotlin.runCatching { val layoutManager = recyclerView.layoutManager as LinearLayoutManager val position = layoutManager.findFirs

  • Android开发RecyclerView实现折线图效果

    本文实例为大家分享了Android开发RecyclerView实现折线图效果的具体代码,供大家参考,具体内容如下 效果图如下: 实现的关键是自定义的控件: package com.example.recyclelinechart.test; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; imp

  • Android 手写RecyclerView实现列表加载

    目录 前言 1 RecyclerView的加载流程 2 自定义RecyclerView 2.1 RecyclerView三板斧 2.2 初始化工作 2.3 ItemView的获取与摆放 2.4 复用池 2.5 数据更新 3 RecyclerView滑动事件处理 3.1 点击事件与滑动事件 3.2 scrollBy和scrollTo 3.3 滑动带来的View回收 3.4 加载机制 3.5 RecyclerView下滑处理 3.6 边界问题 前言 我相信一点,只要我们的产品中,涉及到列表的需求,肯

  • Android实现RecyclerView嵌套流式布局的详细过程

    目录 前言 实现过程 效果 总结 前言 Android开发中,列表页面是常见需求,流式布局的标签效果也是常见需求,那么两者结合的效果啥样呢?这篇文章简单实现一下. 实现过程 添加流式布局依赖,在app/build.gradle文件中添加如下代码 implementation 'com.google.android.flexbox:flexbox:3.0.0' 新建Activity文件RecyclerViewActivity.class package com.example.androidstu

  • Android RecyclerView实现吸顶动态效果流程分析

    目录 一.ItemDecoration 二.实现RecyclerView吸顶效果 1.实现一个简单的RecyclerView 2.通过ItemDecoration画分割线 3.画出每个分组的组名 4.实现吸顶效果 完整demo 一.ItemDecoration ItemDecoration 允许应用给具体的 View 添加具体的图画或者 layout 的偏移,对于绘制 View之间的分割线,视觉分组边界等等是非常有用的. 当我们调用 addItemDecoration() 方法添加 decora

  • Android RecyclerView缓存复用原理解析

    目录 一.牵出缓存 1.缓存还在屏幕内的ViewHolder——Scrap缓存 mAttachedScrap mChangeScrap 用一个例子说明 2.缓存屏幕之外的ViewHolder——CacheView 3.mViewCacheExtension 4.RecycledViewPool 二.到底是四级缓存还是三级缓存 一.牵出缓存 都有哪些缓存,作用是什么,为什么这么设计 1.缓存还在屏幕内的ViewHolder——Scrap缓存 Scrap是RecyclerView中最轻量的缓存,它不

  • android RecyclerView的一些优化点介绍

    目录 1.RecycledPool的重用 2.setHasFixedSize(boolean)的使用 3.setHasStableIds(boolean)的使用 4.ViewCacheExtension的使用 5.预加载 6.更新列表的方式 item局部更新 整体列表更新 总结 1.RecycledPool的重用 场景以及使用: 多个RecyclerView出现,并且他们的item布局结构一致,这时候可以进行重用. 在进行RecyclerView的初始化设置时候进行RecycledPool的设置

  • android studio 新手入门教程(二)项目的导入教程图解

    上篇文章介绍了AS的一些常用设置方法,当工具调教妥当后,自然就要开始项目的开发啦.从零开始新建一个项目,这个简单,不必多说,这篇博客会分享我从旧平台eclipse导入项目到AS的过程,以及遇到的一些问题并如何解决.开篇先粗略的提一些需要注意的地方. ##结构目录 和eclipse不同,在android 视图下的项目目录分为java,res和manifests. manifests目录存放清单文件,不必多说. java目录会默认生成三个文件夹,其中test为在本机执行单元测试代码的目录, andr

  • Android RecyclerView打造悬浮效果的实现代码

    本文介绍了Android RecyclerView悬浮效果,分享给大家,具体如下: 先看个效果 这是一个City列表,每个City都有所属的Province,需要在滑动的时候,将对应的Province悬浮在顶部.悬浮顶部的Province需要根据列表的滑动而适当改变位置,实现"顶上去"的效果. 实现思路: 利用RecyclerView.ItemDecoration绘制Province(就像绘制分割线一样) 同一组的City,只绘制一个Province 计算偏移,将当前Province固

  • Android RecyclerView仿新闻头条的频道管理功能

    需要在build里添加依赖 compile 'com.android.support:recyclerview-v7:25.3.1' 布局文件activity_main <android.support.v7.widget.RecyclerView android:layout_weight="1" android:id="@+id/recyclerView_up" android:layout_width="match_parent" a

  • Android RecyclerView详解之实现 ListView GridView瀑布流效果

     什么是RecyclerView RecyclerView 是Google推出的最新的 替代ListView.GridView的组件,RecyclerView是用来显示大量数据的容器,并通过有限数量的子View,来提高滚动时的性能. 与ListView不同,RecyclerView 不再负责布局,而是专注于布局复用.布局主要通过 LayoutManager来管理,目前提供了3种常用的布局管理: LinearLayoutManager 线性布局管理器 (ListView效果) GridLayout

  • Android RecyclerView 上拉加载更多及下拉刷新功能的实现方法

    RecyclerView 已经出来很久了,但是在项目中之前都使用的是ListView,最近新的项目上了都大量的使用了RecycleView.尤其是瀑布流的下拉刷新,网上吧啦吧啦没有合适的自己总结了一哈. 先贴图上来看看: 使用RecyclerView实现上拉加载更多和下拉刷新的功能我自己有两种方式: 1.使用系统自带的Android.support.v4.widget.SwipeRefreshLayout这个控价来实现. 2.自定义的里面带有RecyleView的控件. 使用RecycleVie

  • Android RecyclerView上拉加载更多功能回弹实现代码

    实现原理是使用RecyclerView的OnTouchListener方法监听滑动 在adapter里面增加两项footview 其中date.size为显示的加载条,可以自定义,date.size+1为空白的View,我们设置其高度为0 我们通过LinearLayoutManager的 findLastVisibleItemPosition判断显示的最后一条数据,如果是空白view,表示加载条已经完全展示,松开即可刷新. 回弹效果是通过在滑动时动态改变空白view的高度,达到阻尼效果 ,回弹时

  • Android Recyclerview实现上拉加载更多功能

    在项目中使用列表的下拉刷新和上拉加载更多是很常见的功能,下拉刷新我们可以用Android自带的SwipeRefreshLayout这个很好解决.但是上拉加载更多就要去找一些框架了,刚开始的时候我找到一个Mugen的github开源框架,但是有个问题,当页面能够一次加载全部item的时候,上拉加载的功能就失效了. 这是因为当界面一次能够加载完全部item的时候,继续往上拉,Recyclerview的滑动监听,中的onScrolled方法只会在页面加载的时候调用一次,只后就不会被调用了,并且dy=0

  • Android RecyclerView添加FootView和HeadView

    前提概要: 上一篇文章已经介绍过了RecyclerView的基本使用方法,原文如下:android RecyclerView布局真的只是那么简单!此篇文章算是对RecyclerView更深使用的介绍. FootView和HeadView在ListView中的本身就有相对应的函数,但是在新潮的RecyclerView中却没有了,FootView在分页加载(上拉加载更多)中起着很重要的作用,因此也必须要学习一下了.(HeadView的添加与FootView的添加相比大致一样,在此就只讲FootVie

  • 浅谈Android RecyclerView 间距全适配

    本文介绍了Android RecyclerView 间距全适配,分享给大家,具体如下: LinearLayoutManager spacing import android.graphics.Rect; import android.support.v7.widget.RecyclerView; import android.view.View; /** * Created by anonymous on 2016/9/9 0009. * <p> * SpacesItemDecoration

随机推荐