RecyclerView高级控件

RecyclerView是Android 及其重要的一个高级UI控件,使用频率及其的高,APP的90%以上的页面都会使用的到。由于其出色的性能插拔式的架构设计,被全世界广大开发者一致称赞。

LinerLayoutManager列表布局

纵向列表

recyclerView.layoutManager =LinearLayoutManager(context, VERTICAL, false)
recyclerView.adapter = MyAdapter()

横向列表

recyclerView.layoutManager =LinearLayoutManager(context, HORIZONTAL, false)
recyclerView.adapter = MyAdapter()

数据源适配器

inner class MyAdapter : RecyclerView.Adapter<ViewHolder>() {// 【必须复写】创建ItemView的ViewHolder,用于后续的数据绑定override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {val view =LayoutInflater.from(context).inflate(R.layout.item_view_staggered, parent, false)  return ViewHolder(view)}// 【必须复写】告诉RecyclerView列表上item的条数override fun getItemCount(): Int {return 20}// 【必须复写】item的数据绑定override fun onBindViewHolder(holder: ViewHolder, position: Int) {holder.itemView.item_head.setImageResource(R.drawable.icon_jetpack)holder.itemView.item_name.text = "【${position}】移动端架构师体系课"holder.itemView.item_message.text ="移动开发“两极分化”,没有差不多的“中间层,唯有尽早成长为架构师,你的职业道路才能走的更远更稳"}}// 创建一个ViewHolder 必须继承自 RecyclerView.ViewHolder。用于后续的数据绑定inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {}

案例

代码结构:

MainActivity.kt

package com.example.listexampleimport androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerViewclass MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)
val list=listOf<String>("first","second","thrid","etc...")var recyclerView=findViewById<RecyclerView>(R.id.recyclerView)recyclerView.layoutManager=LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)recyclerView.adapter=ItemAdapter(list)}
}

ItemAdapter.kt

package com.example.listexampleimport android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.appcompat.view.menu.ActionMenuItemView
import androidx.recyclerview.widget.RecyclerViewclass ItemAdapter(val items:List<String>) : RecyclerView.Adapter<ItemAdapter.ViewHolder>(){override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {val view=LayoutInflater.from(parent.context).inflate(R.layout.item_list,parent,false)return  ViewHolder(view)}override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bindView(items[position])}override fun getItemCount()=items.sizeinner  class  ViewHolder(itemView: View): RecyclerView.ViewHolder(itemView  ){fun bindView(item: String){val textView= itemView.findViewById<TextView>(R.id.textView)textView.text=item
}}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"tools:context=".MainActivity"><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/recyclerView"android:layout_width="409dp"android:layout_height="729dp"android:layout_marginStart="20dp"android:layout_marginTop="20dp"android:layout_marginEnd="20dp"android:layout_marginBottom="13dp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

item_list.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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="wrap_content"><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="TextView"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

运行效果

RecyclerView高级控件-附实例【android专题】相关推荐

  1. Android 高级控件(七)——RecyclerView的方方面面

    Android 高级控件(七)--RecyclerView的方方面面 RecyclerView出来很长时间了,相信大家都已经比较了解了,这里我把知识梳理一下,其实你把他看成一个升级版的ListView ...

  2. Android从入门到进阶之高级控件

    高级控件 1.自动完成文本控件 在搜索引擎(百度.搜狗)输入几个文字,会出来一些提示.可以减少用户的输入,提高程序的效率.刚才看到的自动提示,ajax技术. 1.1AotoCompleteTextVi ...

  3. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第八章:高级控件

    本章介绍了App开发常用的一些高级控件用法,主要包括:如何使用下拉框及其适配器.如何使用列表 类视图及其适配器.如何使用翻页类视图及其适配器.如何使用碎片及其适配器等.然后结合本章所学 的知识,演示了 ...

  4. Android的高级控件(自动提示文本框与下拉列表)

    一.高级控件与常用控件的区别:是否使用适配器 二.适配器 1.种类 ①.数组适配器 ArrayAdapter       new ArrayAdapter<String>(this,R.l ...

  5. Android高级控件(二)——SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现...

    Android高级控件(二)--SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现 写这个的原因呢,也是因为项目中用到了gif动画,虽然网上有很多的架包可以实现,不过我们还 ...

  6. 《移动项目实践》实验报告——Android高级控件

    实验目的 1.熟悉App开发常用的一些高级控件及相关工具,主要包括日期时间控件的用法.列表类视图及其适配器的用法.翻页类视图及其适配器的用法.碎片及其适配器的用法等: 2.熟悉四大组件之一广播Broa ...

  7. WinForm高级控件实例--职员信息登记

    WinForm高级控件实例--职员信息登记 转载于:https://www.cnblogs.com/macT/p/9288092.html

  8. Android高级控件----AdapterView与Adapter详解

    在J2EE中提供过一种非常好的框架--MVC框架,实现原理:数据模型M(Model)存放数据,利用控制器C(Controller)将数据显示在视图V(View)上.在Android中有这样一种高级控件 ...

  9. Android高级控件(一)——ListView绑定CheckBox实现全选,增加和删除等功能

    Android高级控件(一)--ListView绑定CheckBox实现全选,增加和删除等功能 这个控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adap ...

最新文章

  1. ElementUI el-table 在flex下的宽度自适应问题
  2. e x泰勒 java_maven project
  3. I/O----复制文本文件
  4. windows中的计划任务(タスクスケジュール)不登陆也可以执行 设定方式
  5. 在ubuntu 上安装pycharm
  6. jsp页面输出excel文件乱码解决方案
  7. 两段检验系统生成的identityHashCode是否重复的代码
  8. su和sudo命令详解
  9. SAP-MM MRP类型详解
  10. LaTex 插入图像
  11. [转妙文]垃圾收集趣史
  12. mapgis 转换为CAD格式图形 显示不出来的处理
  13. AI智能润色改写,伪原创写作工具,毕业论文必备工具
  14. onlyoffice协同编辑(多人共享编辑)、在线文档编辑,支持word、excel
  15. Python----数据分析-使用scikit-learn构建模型实训(wine数据集、wine_quality数据)
  16. 51Nod 1737 配对
  17. 外部地址是什么意思_NAT网络地址转换
  18. Webcam.getWebcamByName(“XXX“)的用法/Webcam调用摄像头的方法
  19. vue中使用Luckysheet实现Excel的导入、在线编辑、导出等功能
  20. 【微信小程序】小程序使用canvas画布生成分享朋友圈的海报

热门文章

  1. java为什么监听器里没有输出,JAVA Web开发技术应用——监听器
  2. matlab ltiview应用例子,Matlab控制工具箱(网络软件)
  3. python学习内容大全_python学习内容大全
  4. python集合与字典区别_Python中的字典与集合
  5. vs2022 无法打开包括文件: “crtdbg.h” no such file or directory
  6. linux pprof工具安装,google perftools工具介绍
  7. seurat提取表达矩阵_单细胞数据分析神器——Seurat
  8. ThreadPoolExecutor线程池的理解与应用
  9. json保存格式标准化的小trick,使用indent参数
  10. 集合中元素的数据类型可以不同,但集合中不能嵌套列表、元组、集合、字典