当前位置: 首页 > news >正文

网站幻灯通栏代码市场营销策划方案模板

网站幻灯通栏代码,市场营销策划方案模板,网站制作中帐号登录怎么做,如何设计网站首页一、RecyclerView的优势 RecyclerView 的最大优势在于,它对大型列表来说非常高效: 默认情况下,RecyclerView 仅会处理或绘制当前显示在屏幕上的项。例如,如果您的列表包含一千个元素,但只有 10 个元素可见&#xff0…

一、RecyclerView的优势

RecyclerView 的最大优势在于,它对大型列表来说非常高效:

  • 默认情况下,RecyclerView 仅会处理或绘制当前显示在屏幕上的项。例如,如果您的列表包含一千个元素,但只有 10 个元素可见,那么 RecyclerView 仅会完成在屏幕上绘制这 10 个项的工作。当用户滚动时,RecyclerView 会确定应在屏幕上显示哪些新项,然后仅完成显示这些项的工作。
  • 当某个项滚动出屏幕时,RecyclerView 会回收其视图。也就是说,这个项中会填充滚动到屏幕上的新内容。RecyclerView 的这种行为可以节省大量处理时间,并能让列表顺畅地滚动。
  • 当某个项发生变化时,RecyclerView 无需重新绘制整个列表即可更新该项。在显示包含复杂项的长列表时,这可以极大地提高效率!

二、RecyclerView中显示数据的步骤

如需在 RecyclerView 中显示您的数据,您需要以下几个部分:

  • 要显示的数据。即列表项中要显示的内容。
  • 在布局文件中定义的一个 RecyclerView 实例,用作视图的容器。RecyclerView包含与您的数据对应的视图的 ViewGroup,它本身是一个视图,因此,将 RecyclerView 添加到布局中的方式与添加任何其他界面元素相同。
  • 一个数据项的布局。如果所有列表项看起来都一样,您可以对所有这些列表项使用相同的布局,但这不是强制性要求。项布局必须与 fragment 的布局分开创建,以便一次创建一个项视图,并在其中填充数据。
  • 一个布局管理器。布局管理器负责排列列表中的各个元素。您可以使用 RecyclerView 库提供的某个布局管理器,也可以定义自己的布局管理器。布局管理器均基于库的 LayoutManager 抽象类。
  • 一个 ViewHolder。该 ViewHolder 用于扩展 ViewHolder 类。它包含视图信息,用于显示项布局中的一项。ViewHolder 还会添加一些信息,供 RecyclerView 用于在屏幕上高效移动视图。可以通过扩展 RecyclerView.ViewHolder 来定义 ViewHolder。
  • 一个适配器。该适配器可将您的数据与 RecyclerView 相关联。它会调整数据,使其可在 ViewHolder 中显示。RecyclerView 会使用适配器确定如何在屏幕上显示数据。可以通过扩展 RecyclerView.Adapter 来定义 Adapter。

三、实现RecyclerView

1. 添加依赖项

在模块的 build.gradle 中添加 RecyclerView 的依赖项:

implementation("androidx.recyclerview:recyclerview:1.3.2")

2. 准备要显示的数据

本例只是演示 RecyclerView 的用法,故只简单显示颜色列表,数据项中只需定义一个 TextView 来显示颜色即可。实际项目中需根据需求定义相应的数据类来保存列表项内容。

val listData = arrayOf("yellow", "red", "blue")

3. 在 xml 中添加RecyclerView组件

布局 recyclerview_main.xml

<androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/recyclerview"android:layout_width="fill_parent"android:layout_height="wrap_content" />

4. 创建 列表项布局

本例中 RecyclerView 显示了一个简单的文本元素列表,每个视图项的布局在xml中定义,recyclerview_item.xml 布局如下:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="40dp"><TextViewandroid:id="@+id/tv_text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/element_text"android:gravity="center_vertical"/></FrameLayout>

5. 选择布局管理器

RecyclerView 中的列表项由 LayoutManager 类负责排列。RecyclerView 库提供了三种布局管理器,用于处理最常见的布局情况:

  • LinearLayoutManager 将各个项排列在一维列表中。
  • GridLayoutManager 将项排列在二维网格中:
    • 如果网格垂直排列,GridLayoutManager 会尽量使每行中所有元素的宽度和高度相同,但不同的行可以有不同的高度。
      - 如果网格水平排列,GridLayoutManager 会尽量使每列中所有元素的宽度和高度相同,但不同的列可以有不同的宽度。
  • StaggeredGridLayoutManager 与 GridLayoutManager 类似,但不要求同一行中的表项具有相同的高度(垂直网格有此要求)或同一列中的列表项具有相同的宽度(水平网格有此要求)。其结果是,同一行或同一列中的列表项可能会错落不齐。

6. 实现ViewHolder和适配器Adapter

ViewHolder 是包含列表中各列表项的布局的 View 的封装容器。Adapter 会根据需要创建 ViewHolder 对象,还会为这些视图设置数据。将视图与其数据相关联的过程称为“绑定”。这两个类配合使用,共同定义数据的显示方式。

定义适配器时,您需要替换三个关键方法:

  • onCreateViewHolder():每当 RecyclerView 需要创建新的 ViewHolder 时,它都会调用此方法。此方法会创建并初始化 ViewHolder 及其关联的 View,但不会填充视图的内容,因为 ViewHolder 此时尚未绑定到具体数据。
  • onBindViewHolder():RecyclerView 调用此方法将 ViewHolder 与数据相关联。此方法会提取适当的数据,并使用该数据填充 ViewHolder 的布局。例如,如果 RecyclerView 显示的是一个名称列表,该方法可能会在列表中查找适当的名称,并填充 ViewHolder 的 TextView widget。
  • getItemCount():RecyclerView 调用此方法来获取数据集的大小。例如,在通讯簿应用中,这可能是地址总数。RecyclerView 使用此方法来确定什么时候没有更多的列表项可以显示。

下面是一个典型的简单 Adapter 示例,该 Adapter 包含一个显示数据列表的嵌套 ViewHolder。在本例中,RecyclerView 显示了一个简单的文本元素列表。系统会向 Adapter 传递一个字符串数组,该数组包含了 ViewHolder 元素的文本。

	package com.android.jetpack.recyclerviewimport android.view.LayoutInflaterimport android.view.Viewimport android.view.ViewGroupimport android.widget.TextViewimport androidx.recyclerview.widget.RecyclerViewimport com.android.jetpack.Rclass CustomAdapter(private val dataSet: Array<String>): RecyclerView.Adapter<CustomAdapter.ViewHolder>() {// 列表项视图容器class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {// 列表项内控件val textview: TextViewinit {textview = view.findViewById(R.id.tv_text)}}override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {val view = LayoutInflater.from(parent.context).inflate(R.layout.recyclerview_item, parent, false)return ViewHolder(view)}override fun getItemCount(): Int {return dataSet.size}override fun onBindViewHolder(holder: ViewHolder, position: Int) {holder.textview.text = dataSet[position]}}

7. 使用RecyclerView

在 RecyclerViewActivity 中使用 RecyclerView 的代码:

	package com.android.jetpack.recyclerviewimport android.os.Bundleimport android.os.PersistableBundleimport androidx.activity.ComponentActivityimport androidx.recyclerview.widget.LinearLayoutManagerimport com.android.jetpack.databinding.RecyclerviewMainBindingclass RecyclerViewActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {super.onCreate(savedInstanceState, persistentState)val binding = RecyclerviewMainBinding.inflate(layoutInflater)setContentView(binding.root)val listData = arrayOf("yellow", "red", "blue")val adapter = CustomAdapter(listData)binding.recyclerview.adapter = adapterbinding.recyclerview.layoutManager = LinearLayoutManager(this)}}

参考文档:

https://developer.android.google.cn/codelabs/kotlin-android-training-recyclerview-fundamentals
https://developer.android.google.cn/develop/ui/views/layout/recyclerview?hl=zh_cn

http://www.khdw.cn/news/14117.html

相关文章:

  • 做网站的准备什么软件优化网站页面
  • yy直播下载免费下载济南百度推广优化
  • 微网站自己怎么做搜索引擎优化大致包含哪些内容或环节
  • 网站和新媒体建设管理办法域名138查询网
  • 现在从事网站开发如何网站收录查询爱站
  • app 开发seo文章优化技巧
  • 郑州互助盘网站开发注册推广
  • 建筑网址大全网站谷歌搜索引擎香港入口
  • 网站建设外包还是自建关键词seo是什么意思
  • 做网站发布信息seo教程视频论坛
  • 郑州网站开发关键词优化和seo
  • 网站建设方案预算费用预算东莞网站建设平台
  • 学生网站建设实训报告保定关键词排名推广
  • 做网站找合作伙伴信息流推广的竞价机制是
  • 如何做网站内链优化广告买卖网
  • wordpress图片自动水印seo网络培训
  • 做直播网站vps可以吗产品宣传推广方案
  • 免费网站制作作业百度搜索引擎网址
  • 开源手机建站系统seo网络推广招聘
  • 一个专门做字画的网站各类资源关键词
  • 北京网站制作设计与开发服务最新的全国疫情
  • 北京建站管理系统开发乐天seo培训
  • 东莞常平做网站广州抖音推广公司
  • 海淀团队组建网站百度知道个人中心
  • 合肥最新疫情最新消息福州百度快速优化
  • 可以做长页的网站网络广告营销的案例
  • 视频类网站怎么做游戏推广员上班靠谱吗
  • 男女激烈做羞羞事网站搜索优化软件
  • 网站建设规划设计报告湖南seo推广服务
  • 昆明网站建设天猫运营做一个自己的网站