RecyclerView高级控件-附实例【android专题】
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专题】相关推荐
- Android 高级控件(七)——RecyclerView的方方面面
Android 高级控件(七)--RecyclerView的方方面面 RecyclerView出来很长时间了,相信大家都已经比较了解了,这里我把知识梳理一下,其实你把他看成一个升级版的ListView ...
- Android从入门到进阶之高级控件
高级控件 1.自动完成文本控件 在搜索引擎(百度.搜狗)输入几个文字,会出来一些提示.可以减少用户的输入,提高程序的效率.刚才看到的自动提示,ajax技术. 1.1AotoCompleteTextVi ...
- 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第八章:高级控件
本章介绍了App开发常用的一些高级控件用法,主要包括:如何使用下拉框及其适配器.如何使用列表 类视图及其适配器.如何使用翻页类视图及其适配器.如何使用碎片及其适配器等.然后结合本章所学 的知识,演示了 ...
- Android的高级控件(自动提示文本框与下拉列表)
一.高级控件与常用控件的区别:是否使用适配器 二.适配器 1.种类 ①.数组适配器 ArrayAdapter new ArrayAdapter<String>(this,R.l ...
- Android高级控件(二)——SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现...
Android高级控件(二)--SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现 写这个的原因呢,也是因为项目中用到了gif动画,虽然网上有很多的架包可以实现,不过我们还 ...
- 《移动项目实践》实验报告——Android高级控件
实验目的 1.熟悉App开发常用的一些高级控件及相关工具,主要包括日期时间控件的用法.列表类视图及其适配器的用法.翻页类视图及其适配器的用法.碎片及其适配器的用法等: 2.熟悉四大组件之一广播Broa ...
- WinForm高级控件实例--职员信息登记
WinForm高级控件实例--职员信息登记 转载于:https://www.cnblogs.com/macT/p/9288092.html
- Android高级控件----AdapterView与Adapter详解
在J2EE中提供过一种非常好的框架--MVC框架,实现原理:数据模型M(Model)存放数据,利用控制器C(Controller)将数据显示在视图V(View)上.在Android中有这样一种高级控件 ...
- Android高级控件(一)——ListView绑定CheckBox实现全选,增加和删除等功能
Android高级控件(一)--ListView绑定CheckBox实现全选,增加和删除等功能 这个控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adap ...
最新文章
- ElementUI el-table 在flex下的宽度自适应问题
- e x泰勒 java_maven project
- I/O----复制文本文件
- windows中的计划任务(タスクスケジュール)不登陆也可以执行 设定方式
- 在ubuntu 上安装pycharm
- jsp页面输出excel文件乱码解决方案
- 两段检验系统生成的identityHashCode是否重复的代码
- su和sudo命令详解
- SAP-MM MRP类型详解
- LaTex 插入图像
- [转妙文]垃圾收集趣史
- mapgis 转换为CAD格式图形 显示不出来的处理
- AI智能润色改写,伪原创写作工具,毕业论文必备工具
- onlyoffice协同编辑(多人共享编辑)、在线文档编辑,支持word、excel
- Python----数据分析-使用scikit-learn构建模型实训(wine数据集、wine_quality数据)
- 51Nod 1737 配对
- 外部地址是什么意思_NAT网络地址转换
- Webcam.getWebcamByName(“XXX“)的用法/Webcam调用摄像头的方法
- vue中使用Luckysheet实现Excel的导入、在线编辑、导出等功能
- 【微信小程序】小程序使用canvas画布生成分享朋友圈的海报
热门文章
- java为什么监听器里没有输出,JAVA Web开发技术应用——监听器
- matlab ltiview应用例子,Matlab控制工具箱(网络软件)
- python学习内容大全_python学习内容大全
- python集合与字典区别_Python中的字典与集合
- vs2022 无法打开包括文件: “crtdbg.h” no such file or directory
- linux pprof工具安装,google perftools工具介绍
- seurat提取表达矩阵_单细胞数据分析神器——Seurat
- ThreadPoolExecutor线程池的理解与应用
- json保存格式标准化的小trick,使用indent参数
- 集合中元素的数据类型可以不同,但集合中不能嵌套列表、元组、集合、字典