在移动应用开发中,很多时候我们需要去展示数据记录,如电商应用中的商品列表、订单列表等等一系列的数据记录的展示时,我们需要用到Android的列表组件展示这些数据,列表组件应该是我们遇到到比较常见也是必须要掌握的基础界面布局实现。常见的列表组件有ListView、RecyclerView等,现在实现列表数据展示比较灵活也比较主流的组件是RecyclerView组件,本篇我们用一个完整的示例来实现RecyclerView的数据展示。

创建列表界面

新建一个ListActivity并创建对应的布局文件,在布局文件里添加RecyclerView组件,布局文件如图所示

<?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"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:padding="10dp"android:background="@color/white"android:orientation="vertical"><androidx.recyclerview.widget.RecyclerViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:id="@+id/rv_list"app:layout_constraintTop_toBottomOf="@+id/text_home"app:layout_constraintStart_toStartOf="parent"app:layout_constraintEnd_toEndOf="parent"/></LinearLayout>

新建列表适配器

新建一个MyAdapter的类继承RecyclerView.Adapter,具体实现代码如下

class MyAdapter (var context: Context?, var dataList: MutableList<DataEntity>): RecyclerView.Adapter<MyAdapter.MyViewHolder>() {override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {val view: View = LayoutInflater.from(context).inflate(R.layout.adapter_view,parent,false)return MyViewHolder(view)}override fun getItemCount(): Int {return dataList.size}override fun onBindViewHolder(holder: MyViewHolder, position: Int) {holder.tv_name?.text = "姓名:"+dataList[position].nameholder.tv_age?.text = "年龄:"+dataList[position].age}class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {var tv_name: TextView? = nullvar tv_age: TextView? = nullinit {tv_name = itemView.findViewById(R.id.tv_name)tv_age = itemView.findViewById(R.id.tv_age)}}}

创建适配器单条数据布局文件adapter_view,代码如下

<?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="50dp"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"android:layout_weight="1"android:gravity="center_vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text=""android:id="@+id/tv_name"android:textSize="18sp"android:layout_marginLeft="20dp"android:textColor="@color/black"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text=""android:id="@+id/tv_age"android:textSize="14sp"android:layout_marginLeft="20dp"android:textColor="@color/black"/></LinearLayout><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:background="@color/black"/>
</LinearLayout>

方法说明
onCreateViewHolder :引入布局视图,也就是单条数据显示的布局
getItemCount :当前列表数据记录总条数
onBindViewHolder :界面绑定数据

模板类
MyViewHolder
这里我们简单讲一下这个是什么意思,因为列表数据量大,在上下拉动的过程中需要不停的去复用视图,这样才能更高效的展示数据,MyViewHolder 实际上就是为了辅助视图复用的模型类。这里现在不作深入的讲解,目前只需要按照这样的规则去搭建就可以。

实现列表数据展示

在ListActivity中实现如下代码

class ListActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_list)initData()}fun initData(){var adapter= MyAdapter(this,getListData())rv_list.layoutManager = LinearLayoutManager(this)rv_list.adapter = adapter}private fun getListData():MutableList<DataEntity>{var listData:MutableList<DataEntity> = ArrayList<DataEntity>()for (i in 0..100){var dataEntity=DataEntity()dataEntity.name="张三"+idataEntity.age=10+ilistData.add(dataEntity)}return listData}
}

编译后即可实现RecyclerView数据列表的基础展示

我们这里只是简单的介绍了RecyclerView的基础使用方法和步骤,熟悉了RecyclerView之后,我们可以利用它实现各种各样复杂的列表界面。

Android实战开发-Kotlin教程(入门篇-RecyclerView数据列表的实现)相关推荐

  1. Android实战开发-Kotlin教程(布局篇 3.1)

    上一篇我们对Android常用的组件已经有了一个初步的了解,本篇我们开始了解Android常用的布局方式 什么是布局?怎么去理解布局了?简单的来说,布局就是一种约束,比如你把一堆的东西放到地上,他就是 ...

  2. Android实战开发-Kotlin教程(语法篇 1.2)

    上一篇我们介绍了Kotlin语法的一些基础用法,本章我们来学习一下Kotin的语法知识 if表达式 if表达式在开发过程中最常见的判断表达式 if后面的括号代表判断的条件表达式,如条件表达式的结果为t ...

  3. Android实战开发-Kotlin教程(组件篇 2.3)

    上一篇我们对TextView的使用以及相关属性有了一定的了解,本篇我们开始了解Button和EditText.ImageView的使用 Button Button是UI中的一个小部件,主要用于交互中用 ...

  4. Android实战开发——引导页面(ViewPager)篇

    Android实战开发之引导页面 文章目录 Android实战开发之引导页面 前言 一.概述 二.操作步骤 1.操作准备 2.初始化 3.适配器设置 3.圆点的滑动事件 三.总结 前言 本篇文章主要介 ...

  5. 【helloworld】-微信小程序开发教程-入门篇【1】

    1. 开篇导言 本节目标:旨在演示如何用开发者工具构建并运行简单的 helloworld 应用. 目标用户:无编程经验,但对微信小程序感兴趣的同学. 学习目标:开发者工具的基本使用流程,即创建.导入. ...

  6. jQuery LigerUI 使用教程入门篇

    jQuery LigerUI 使用教程入门篇 阅读目录 获取最新代码 ligerUI是什么 如何使用 如何扩展 获取最新代码 可以到http://ligerui.googlecode.com下载最新代 ...

  7. java ligerui_[Java教程]jQuery LigerUI 使用教程入门篇_星空网

    jQuery LigerUI 使用教程入门篇 2012-01-17 0 阅读目录获取最新代码 ligerUI是什么 如何使用 如何扩展 获取最新代码 可以到http://ligerui.googlec ...

  8. 微信小程序教程入门篇

    微信小程序教程入门篇: 微信小程序怎么做?做一个微信小程序要多少钱呢? 作为Z时代,Y时代的我们,做一个微信小程序难道还要去看书学代码吗? 不存在的各位. 现在制作一个微信小程序,只需要动动鼠标键盘, ...

  9. Android UI开发第二十五篇——分享一篇自定义的 Action Bar

    Action Bar是android3.0以后才引入的,主要是替代3.0以前的menu和tittle bar.在3.0之前是不能使用Action Bar功能的.这里引入了自定义的Action Bar, ...

最新文章

  1. 牛客网刷题知识汇总3
  2. 悉尼大学计算机工程专业世界排名,2019QS澳洲计算机专业排名,7所大学进入世界百强!...
  3. kl距离 java_信息量、熵、最大熵、联合熵、条件熵、相对熵、互信息。
  4. 基于命令行设置lazy-queue
  5. [转载]TopCoder兼职赚钱入门(Part. 1)
  6. 一维信号小波阈值去噪 c语言,一维信号小波阈值去噪
  7. 将您的SQL Server工作负载迁移到PostgreSQL –第2部分
  8. 【报告分享】德勤-教育行业发展报告(政策、资本、AI、职业教育).pdf2019年中国外卖产业调查研究报告.pdf...
  9. Linux操作Oracle(7)—连接Oracle12C 或 OracleRac 出现 ORA-28040: No matching authentication protocol,没有匹配的验证协议
  10. 为什么机器学习在嵌入式系统中会失败?
  11. Day7 python高级特性-- 切片 Slice
  12. python语法中的网络编程_(六)python语法之网络编程
  13. python爬虫步骤-黑客基础 编写Python爬虫入门步骤
  14. 算法精解:C语言描述
  15. 揭秘勒索病毒背后黑客组织:偷了官方网络武器库
  16. php开发bt种子,[原创作品][PHP]BT种子打包推送小神器~~
  17. 年底互联网寒冬,裁员直线上升
  18. 人人网相册加密密码破解
  19. Vue通过nginx转发后dist文件页面样式丢失
  20. 计算机编码种类(ASCII/gbk/unicode/utf-8)

热门文章

  1. 一文读懂数据挖掘的技术和应用
  2. VB.Net - 基本语法
  3. 33. 搜索旋转排序数组
  4. CH9121模块只有端口2有用
  5. 梯度爆炸和梯度消失的本质原因
  6. 鱼眼相机标定以及OpenCV实现
  7. 【教程】LATTICE DIAMOND 工程新建介绍
  8. Echarts之圆饼图用法
  9. Yum工具详解(二)-----Yum配置阿里源
  10. .NET WPF教程(6)——布局介绍与Canvas(①)