您的位置: 首页 - 站长

ps模板网站推荐什么网站做推广农产品比较好

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

ps模板网站推荐,什么网站做推广农产品比较好,wordpress邮箱验证注册,杭州百度百科一、RecyclerView的优势 RecyclerView 的最大优势在于#xff0c;它对大型列表来说非常高效#xff1a; 默认情况下#xff0c;RecyclerView 仅会处理或绘制当前显示在屏幕上的项。例如#xff0c;如果您的列表包含一千个元素#xff0c;但只有 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:idid/recyclerviewandroid:layout_widthfill_parentandroid:layout_heightwrap_content /4. 创建 列表项布局 本例中 RecyclerView 显示了一个简单的文本元素列表每个视图项的布局在xml中定义recyclerview_item.xml 布局如下 ?xml version1.0 encodingutf-8? FrameLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_height40dpTextViewandroid:idid/tv_textandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textstring/element_textandroid:gravitycenter_vertical//FrameLayout5. 选择布局管理器 RecyclerView 中的列表项由 LayoutManager 类负责排列。RecyclerView 库提供了三种布局管理器用于处理最常见的布局情况 LinearLayoutManager 将各个项排列在一维列表中。GridLayoutManager 将项排列在二维网格中 如果网格垂直排列GridLayoutManager 会尽量使每行中所有元素的宽度和高度相同但不同的行可以有不同的高度。 - 如果网格水平排列GridLayoutManager 会尽量使每列中所有元素的宽度和高度相同但不同的列可以有不同的宽度。 StaggeredGridLayoutManager 与 GridLayoutManager 类似但不要求同一行中的表项具有相同的高度垂直网格有此要求或同一列中的列表项具有相同的宽度水平网格有此要求。其结果是同一行或同一列中的列表项可能会错落不齐。
  2. 实现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: ArrayString): RecyclerView.AdapterCustomAdapter.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?hlzh_cn