Titan笔记

  • 首页
  • Java
  • 数据结构
  • C语言
  • Web
  • 杂谈
  • 移动开发
  • 逸笔挥墨
Titan笔记
分享学习,研究与开发的点滴记忆
  1. 首页
  2. 移动开发
  3. Android
  4. 正文

RecyclerView组件的使用

2021年7月25日 561点热度 0人点赞 0条评论

官方介绍

RecyclerView是ListView的一个更高级、更灵活的版本。RecyclerView组件是为大量的视图组件提供的一种容器,使得它们可以有效的在其中循环和滚动。

RecyclerView is a more advanced and flexible version of ListView. This widget is a container for large sets of views that can be recycled and scrolled very efficiently. Use the RecyclerView widget when you have lists with elements that change dynamically.

RecyclerView的使用

最终要达到的效果如下

RecyclerView组件的使用插图

编写相关的布局文件

MainItem布局如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="120dp"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/itemIcon"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_gravity="center"
        android:layout_weight="0.7"
        tools:ignore="ContentDescription"
        tools:srcCompat="@tools:sample/avatars" />

    <TextView
        android:textSize="20sp"
        android:id="@+id/itemName"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.3"
        android:gravity="center" />
</LinearLayout>

实现继承自RecyclerView.Adapter的Adapter类

class MainItemAdapter(private val itemList: List<MainItem>) :
    RecyclerView.Adapter<MainItemAdapter.ViewHolder>() {
    inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
        val itemName: TextView = view.findViewById(R.id.itemName)
        val itemIcon: ImageView = view.findViewById(R.id.itemIcon)
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val ctx = parent.context
        val view = LayoutInflater.from(parent.context)
            .inflate(R.layout.main_item, parent, false)
        return ViewHolder(view).apply {
            itemView.setOnClickListener {
                val position = this.adapterPosition
                val mainItem = itemList[position]
                when (mainItem.id) {
                    1 -> {
                        ctx.startActivity(Intent(ctx, SenderActivity::class.java))
                    }
                }
            }
        }
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val mainItem = itemList[position]
        holder.itemName.text = mainItem.name
        holder.itemIcon.setImageResource(mainItem.iconId)
    }

    override fun getItemCount(): Int = itemList.size
}

在Activity中初始化数据和RecyclerView

private val itemList = ArrayList<MainItem>()
private fun initItems() {
    repeat(20) {
        itemList.addAll(
            listOf(
                MainItem(1, "Activity演示", R.drawable.activity_icon)
            )
        )
    }
}

private fun initRecyclerView() {
    val recyclerView = findViewById<RecyclerView>(R.id.recycler_view)
    recyclerView.layoutManager = GridLayoutManager(this, 3)
    recyclerView.adapter = MainItemAdapter(itemList)
}

 

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: Android Android RecycleView的使用 RecycleView RecycleView的使用
最后更新:2021年7月25日

Titan

不为岁月流逝蹉跎,不为潮流的势头去附和

点赞
下一篇 >

文章评论

您需要 登录 之后才可以评论
最新 热点 随机
最新 热点 随机
我的春招 & 暑期实习记 腾讯Serverless体验,使用TypeScript编写并部署云函数 Go-Proxy-Checker,一款基于Go编写的高性能代理服务器验证工具 Jetbrains(IDEA)免费教育订阅申请指南 Appium移动测试入门指南(二) - Capability 配置 Appium移动测试入门指南(一)- Appium概述
我的春招 & 暑期实习记
[杂谈] 什么是递归函数? [数据结构] 稀疏矩阵的存储 [数据结构] 二叉搜索树的CURD(增删改查)操作 线程类常用方法 - Java并发编程 Spring Cloud 微服务学习笔记 - IDEA工程搭建 Spring Cloud 微服务学习笔记 - 开篇
分类
  • Android
  • C语言
  • Hadoop
  • Hive
  • Java
  • JavaWeb
  • Linux运维之道
  • Mybatis学习笔记
  • Python
  • SpringCloud
  • Web
  • Web前端
  • Web后端
  • 并发编程
  • 开发工具
  • 数据库
  • 数据结构
  • 杂谈
  • 生活笔记
  • 移动开发
  • 移动测试
  • 诗词歌赋
  • 软件测试
  • 逸笔挥墨
  • 随摘
标签聚合
Python Apache-Hive Java JavaWeb 数据结构 二叉树 链式存储 Mybatis学习笔记

COPYRIGHT © 2013-2021 Titan. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备20001822号-1

豫公网安备 41010502004418号