博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
安卓开发入门教程-UI控件_RecyclerView
阅读量:1894 次
发布时间:2019-04-26

本文共 2687 字,大约阅读时间需要 8 分钟。

关注 ,免费获取全套安卓开发学习资料

什么是RecyclerView

RecyclerView是当前主流用于显示列表的UI控件.

基础样例

效果图

方案简要介绍

  1. 在app模块build.gradle文件中增加如下依赖
implementation 'androidx.recyclerview:recyclerview:1.1.0'
  1. 在activity对应的布局文件中增加RecyclerView
  1. 新增一个Adapter用于展示列表中每一行内容(含对应布局文件)
    详见下面完整代码中的RvAdapter及其布局文件.
  2. 在activity中实例化Adapter,设置数据,并将adapter设置给RecyclerView
private fun initRecyclerView() {
var dataList = getData() val adapter = RvAdapter() adapter.setData(dataList) recyclerView.adapter = adapter recyclerView.layoutManager = LinearLayoutManager(this)}private fun getData(): List
{
val dataList = ArrayList
() for (index in 0 until 100) {
val text = " 数据$index " dataList.add(text) } return dataList}

完整代码

  1. activity代码:MainActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) initRecyclerView() } private fun initRecyclerView() {
var dataList = getData() val adapter = RvAdapter() adapter.setData(dataList) recyclerView.adapter = adapter recyclerView.layoutManager = LinearLayoutManager(this) } private fun getData(): List
{
val dataList = ArrayList
() for (index in 0 until 100) {
val text = " 数据$index " dataList.add(text) } return dataList }}
  1. MainActivity对应布局文件: activity_main.xml
  1. RecyclerView对应Adapter: RvAdapter
class RvAdapter : RecyclerView.Adapter
() {
private var mDataList = mutableListOf
() private lateinit var mContext: Context override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
mContext = parent.context val view = LayoutInflater.from(mContext).inflate(R.layout.item_layout, parent, false) return ViewHolder(view) } override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val data = mDataList[position] //更新UI上nameTv展示内容 holder.itemView.nameTv.text = data //设置点击事件 holder.itemView.setOnClickListener {
Toast.makeText(mContext, data, Toast.LENGTH_SHORT).show() } } fun setData(dataList: List
) {
mDataList.clear() mDataList.addAll(dataList) notifyDataSetChanged() } override fun getItemCount(): Int = mDataList.size class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)}
  1. RvAdapter对应布局文件: item_layout.xml

基础样例完整源代码


安卓开发入门教程系列汇总

开发语言学习

UI控件学习系列

关注头条号,第一时间获取最新文章:

转载地址:http://wzodf.baihongyu.com/

你可能感兴趣的文章
mysql 中com.mysql.jdbc.PacketTooBigException 解决办法
查看>>
awk 的内置变量 NF、NR、FNR、FS、OFS、RS、ORS
查看>>
CentOS系统内核升级攻略
查看>>
linux系统时区修改(Debian的主机和docker)
查看>>
docker-compose 安装
查看>>
crontab 定时任务
查看>>
查看docker veth pair与宿主机上网卡的对应关系
查看>>
使用 GitLab CI 进行持续集成的一些踩坑
查看>>
企业云盘给贸易业带来新的效益
查看>>
Linux入门常用命令
查看>>
Spring整理
查看>>
SpringMvc加强
查看>>
初识Vue全家桶 Nuxt.js(一)
查看>>
基本路由及动态路由(二)
查看>>
视图:默认模板+默认布局(自定义布局)+nuxt.js页面(三)
查看>>
基于nuxt下asyncData,fetch发送axios请求(四)
查看>>
插件机制+自定义axios(五)
查看>>
Redis的学习之路
查看>>
Windows下Redies+GUI安装,使用Jedis与spring boot 整合
查看>>
Windows创建本地版本库(1)
查看>>