转:https://blog.csdn.net/xiaokangss/article/details/126121567
介绍
这个系列将是我放置所有 Android 笔记的地方。当我学习有关 Android 开发的新知识时,我将在本篇文章中介绍
什么是 RecyclerView ?
好吧,本质上,RecyclerView 使得显示大量数据变得简单高效。我们提供数据并定义每个单独项目的外观,RecyclerView
库在需要时动态创建元素
实现 RecyclerView 的步骤
实现 RecyclerView 可能会让人感到困惑,所以为了让这更容易,我将事情分解为 5 个简单的步骤:
1) 将 RecyclerView 添加到 XML 文件
2) 创建单独的 RecyclerView 项目 XML 文件
3) 创建 ViewHolder
4) 创建适配器
5) 实例化 RecyclerView
如果您不确定 ViewHolder 或 Adapter 是什么,请不要担心,我们稍后会详细讨论它们
将
RecyclerView 添加到 XML 文件
所以这部分部分可能会有些混乱,主要是因为调用了库RecyclerView名,类名也是RecyclerView.
所以除非我特别声明我们在谈论图书馆,否则总是假设我们在谈论类。现在将 RecyclerView 类添加到任何 XML
文件中:
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
1
2
3
4
5
layout和取决于个人开发者width。id只要确保您使用的是正确的 RecyclerView 类。
创建单独的
RecyclerView 项目 XML 文件
众所周知,RecyclerView 用于显示大量数据,既简单又高效。其中一个步骤是定义各个元素的外观。我们通过定义一个新的 XML
文件来做到这一点,当然样式取决于您。但是,我强烈建议使用 Android 提供的CardView:
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="8dp">
android:id="@+id/text_view_priority"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginEnd="154dp"
android:text="This will get replaced by later" />
确保layout_heightCardView 的设置为wrap_content,否则您将获得非常大的 CardView。
另外,请特别注意android:id=“@+id/text_view_priority”,我们稍后将使用该 id
创建
ViewHolder
ViewHolder
描述了一个项目视图和关于它在 RecyclerView 中的位置的元数据。长话短说,这个类将代表 RecyclerView
中的单个项目。我想指出,官方教程HERE(以及本教程)已将 ViewHolder 类设为静态并嵌套在 Adapter
类中。这不是必须的,只是为了便于使用。自定义 ViewHolder
的唯一限制是它扩展了RecyclerView.ViewHolder类。所以你可以像这样创建一个 ViewHolder 类:
public static class ViewHolder extends
RecyclerView.ViewHolder{
private TextView textView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
//Define click listener for the ViewHolder's View
this.textView = (TextView)
itemView.findViewById(R.id.text_view_priority);
}
//GETTERS