iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Android如何实现RecyclerView适配器
  • 910
分享到

Android如何实现RecyclerView适配器

2023-06-14 05:06:14 910人浏览 安东尼
摘要

这篇文章主要讲解了“Android如何实现RecyclerView适配器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android如何实现RecyclerView适配器”吧!源码地址: G

这篇文章主要讲解了“Android如何实现RecyclerView适配器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android如何实现RecyclerView适配器”吧!

源码地址: GitHub

功能

  • 无需继承 Adapter, 无需判断 item 类型.

  • 支持页头和页脚.

  • 支持自动展示空数据界面.

  • 通过 Kotlin 的 lambda 大量缩减代码.

  • 支持全局 Item 类型

  • 支持 diff 刷新

使用

添加依赖

implementation "com.dengzii.adapter:$latestVersion"

通过 lambda 快速使用, 这里就快速绑定了四种 item 的布局.

adapter.setEnableEmptyView(true, SuperAdapter.Empty())adapter.addViewHolderForType<SuperAdapter.Empty>(R.layout.item_empty){ onBindData { _, _ ->   findView<View>(R.id.bt_refresh).setOnClickListener {    // refresh your data  } }}adapter.setHeader("This is header", R.layout.item_header) { onBindData { data, _ ->  findView<TextView>(R.id.tv_title).text = data }}adapter.setFooter(listOf("This", "is", "footer"), R.layout.item_section) { onBindData { data, _ ->  findView<TextView>(R.id.tv_title).text = data.joinToString(" ") }}adapter.addViewHolderForType<Header>(R.layout.item_header) { val title = findView<TextView>(R.id.tv_title) val content by lazyFindView<TextView>(R.id.tv_content) onBindData { data, _ ->  title.text = data.title  content.text = data.content }}

或者不使用 lambda

val adapter = SuperAdapter(listOf("Item 1", "Item 2", "Item 3"))adapter.addViewHolderForType(String::class.java, ItemViewHolder::class.java)recyclerView.layoutManager = LinearLayoutManager(this)recyclerView.adapter = adapterclass ItemViewHolder(parent: ViewGroup) : AbsViewHolder<String>(parent) { private lateinit var mTextView:TextView  override fun onCreate(parent: ViewGroup) {  mTextView = TextView(context)  mTextView.layoutParams = getLayoutParam(      ViewGroup.LayoutParams.WRAP_CONTENT,      ViewGroup.LayoutParams.WRAP_CONTENT    )  setContentView(mTextView) } override fun onBindData(data: String, position: Int) {  mTextView.text = data }}

无需继承 SuperAdapter, 但需要为每种 Item 实现并继承继承抽象类 AbsViewHolder, 并在改类中设置布局和绑定 View, 数据.

AbsViewHolder 代表一种 Item 类型, 其中泛型 T 为该 Item 对应的实体类

类 SuperAdapter 的作用

Adapter 构造器

public SuperAdapter(List<Object> data)

绑定 ViewHolder 到实体类型

public void addViewHolderForType(Class<?> type, Class<? extends AbsViewHolder> holder)

设置 Item 点击事件

 public void setOnItemClickListener(OnItemClickListener listener)  public interface OnItemClickListener{  void onItemClick(View v, Object itemData, int position); }

类 AbsViewHolder 的作用

每个 AbsViewHolder 表示一种 item 类型.

构造器, 必须重写带参数构造器, 否则无法使用, parent 与 Adapter#onCreateViewHolder 中 parent 一致

 public AbsViewHolder(@NonNull ViewGroup parent)

创建 Item 时调用 onCreate 方法, 其中 parent 是该 item 的容器布局

 public abstract void onCreate(@NonNull ViewGroup parent);

绑定数据

public abstract void onBindData(@NonNull T data, int position);

Sample

设置 Adapter

var data:List<Any>...val adapter = SuperAdapter(data)// 绑定数据类到 ViewHolderadapter.addViewHolderForType(Item::class.java, ItemViewHolder::class.java)adapter.addViewHolderForType(Header::class.java, HeaderViewHolder::class.java)adapter.addViewHolderForType(Section::class.java, SectionViewHolder::class.java)adapter.setOnItemClickListener(object : SuperAdapter.OnItemClickListener { override fun onItemClick(v: View?, itemData: Any?, position: Int) { }})recyclerView.layoutManager = LinearLayoutManager(this)recyclerView.adapter = adapter

继承 AbsViewHolder

class ItemViewHolder(parent: ViewGroup) : AbsViewHolder<Item>(parent) { private lateinit var mTvTitle: TextView private lateinit var mTvContent: TextView private lateinit var mIvImage:ImageView override fun onCreate(parent: ViewGroup) {  setContentView(R.layout.item_item)  mTvTitle = findViewById(R.id.tv_title)  mTvContent = findViewById(R.id.tv_content)  mIvImage = findViewById(R.id.iv_img) } override fun onBindData(data: Item, position: Int) {  mTvTitle.text = data.title  mTvContent.text = data.content  mIvImage.setImageResource(data.img) }}

感谢各位的阅读,以上就是“Android如何实现RecyclerView适配器”的内容了,经过本文的学习后,相信大家对Android如何实现RecyclerView适配器这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Android如何实现RecyclerView适配器

本文链接: https://www.lsjlt.com/news/267881.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android如何实现RecyclerView适配器
    这篇文章主要讲解了“Android如何实现RecyclerView适配器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android如何实现RecyclerView适配器”吧!源码地址: G...
    99+
    2023-06-14
  • Android实现的RecyclerView适配器
    目录功能使用类 SuperAdapter 的作用类 AbsViewHolder 的作用Sample这个适配器我珍藏已久(近两年), 不断看到别人发适配器相关的文章, 但我总觉得没我的...
    99+
    2024-04-02
  • 【Android】BaseQuickAdapter使用(RecyclerView万能适配器)
    目录 前言一、导入依赖二、适配器比较三、基础使用四、多布局和分组布局1.BaseMultiItemQuickAdapter2.BaseDelegateMultiAdapter3.BasePro...
    99+
    2023-10-26
    android kotlin android studio
  • 怎么在Android 中利用RecyclerView实现一个通用适配器功能
    怎么在Android 中利用RecyclerView实现一个通用适配器功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。实现代码:RViewHolderimport ...
    99+
    2023-05-31
    android recyclerview recycle
  • xamarin Android如何实现ListView万能适配器
    小编给大家分享一下xamarin Android如何实现ListView万能适配器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!本章主要分为以下三点:打造通用的V...
    99+
    2023-05-30
    android listview
  • Android如何实现RecyclerView添加分割线
    这篇文章给大家分享的是有关Android如何实现RecyclerView添加分割线的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、前言刚开始学习RecyclerView的时候我跟着一个视频学的,当时添加分割线是...
    99+
    2023-05-30
    recyclerview android
  • Android中RecyclerView如何实现Item添加和删除
    这篇文章主要介绍Android中RecyclerView如何实现Item添加和删除,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!先上效果图:RecyclerView简介:RecyclerView用以下两种方式简化了数...
    99+
    2023-05-30
    android recyclerview item
  • android recyclerview分组怎么实现
    要实现Android RecyclerView的分组功能,可以按照以下步骤进行:1. 创建一个包含分组数据和子项数据的数据结构。可以...
    99+
    2023-10-18
    android
  • Android如何实现图片显示与屏幕适配
    这篇文章主要介绍Android如何实现图片显示与屏幕适配,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Android 图片显示与屏幕适配的问题在Android开发中比较头疼的是Android的分辨率问题,那么这里给大...
    99+
    2023-05-30
    android
  • java如何实现适配器模式
    这篇文章将为大家详细讲解有关java如何实现适配器模式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。适配器(Adapter)模式:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不...
    99+
    2023-05-31
    java
  • android中的适配器如何创建
    在Android中,适配器是用于将数据和UI控件(如ListView、RecyclerView等)绑定在一起的桥梁。适配器负责将数据...
    99+
    2023-10-23
    android
  • Android RecyclerView实现九宫格效果
    RecyclerView更加优化的复用机制和方便实现UI效果,几乎替代Listview和GridView的使用。但是分割线的实现,需要自己继承ItemDecoration来绘制。 效...
    99+
    2024-04-02
  • Android中RecyclerView如何使用
    本篇文章给大家分享的是有关Android中RecyclerView如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。RecyclerView 是在Android suppo...
    99+
    2023-05-30
    android recyclerview
  • Android全面屏适配怎么实现
    今天小编给大家分享一下Android全面屏适配怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Android P前后对...
    99+
    2023-07-05
  • Android Recyclerview实现左滑删除功能
    本文实例为大家分享了Android Recyclerview实现左滑删除的具体代码,供大家参考,具体内容如下 1.先创建一个工具类 SlideRecyclerView public...
    99+
    2024-04-02
  • 如何在Android中利用RecyclerView实现一个聊天界面
    这篇文章给大家介绍如何在Android中利用RecyclerView实现一个聊天界面,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。具体内容如下首先在app/build.gradle(注意有两个build.gradle,...
    99+
    2023-05-30
    android recyclerview
  • android项目中如何实现给RecyclerView加上折叠效果
    android项目中如何实现给RecyclerView加上折叠效果?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。效果总结一下这个列表的特点,就是以下三点: 重...
    99+
    2023-05-31
    recyclerview android recycle
  • android深色模式适配怎么实现
    要实现Android深色模式适配,可以按照以下步骤进行:1. 在AndroidManifest.xml文件中设置主题样式为DayNi...
    99+
    2023-09-08
    android
  • Android 手写RecyclerView实现列表加载
    目录前言1 RecyclerView的加载流程2 自定义RecyclerView2.1 RecyclerView三板斧2.2 初始化工作2.3 ItemView的获取与摆放2.4 复...
    99+
    2024-04-02
  • Android应用中怎么实现一个FragmentPagerAdapter适配器
    这期内容当中小编将会给大家带来有关Android应用中怎么实现一个FragmentPagerAdapter适配器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1适配器FragmentPagerAdapte...
    99+
    2023-05-31
    android fragmentpageradapter age
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作