📜  安卓 |带有示例的水平 RecyclerView(1)

📅  最后修改于: 2023-12-03 15:39:03.789000             🧑  作者: Mango

安卓 | 带有示例的水平 RecyclerView

简介

RecyclerView 是安卓提供的一个强大、熟悉和灵活的控件,可以用于动态地展示数据。它替代了 ListView 和 GridView。水平 RecyclerView 是在水平方向上滚动的 RecyclerView。

本文将向程序员介绍如何在安卓应用程序中使用 RecyclerView 来显示水平列表,并提供示例。

操作步骤

以下是在安卓应用中使用 RecyclerView 来创建水平列表的步骤:

  1. 添加依赖

在 build.gradle 文件的 dependencies{} 内添加 RecyclerView 库的依赖。

implementation 'com.android.support:recyclerview-v7:28.0.0'

  1. 添加 RecyclerView 到布局文件

在布局文件中声明 RecyclerView。

<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>
  1. 创建列表项布局

创建用于显示列表项的布局文件(例如,list_item.xml),为布局文件添加必要的组件,例如 ImageView、TextView 等等。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:padding="16dp">

    <ImageView
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/ic_launcher_background" />

    <TextView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="Item Title"
        android:textAlignment="center"
        android:textSize="16sp" />

</RelativeLayout>
  1. 创建 Adapter

创建 RecyclerView.Adapter 子类的适配器,该适配器负责将数据绑定到列表项布局上,创建 ViewHolder 并将其与布局文件联系起来。

class MyAdapter(private val dataList: MutableList<ItemData>) : RecyclerView.Adapter<MyViewHolder>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.list_item, parent, false)
        return MyViewHolder(view)
    }

    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        val itemData = dataList[position]
        holder.itemView.image.setImageResource(itemData.image)
        holder.itemView.text.text = itemData.title
    }

    override fun getItemCount(): Int {
        return dataList.size
    }
}

class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
  1. 设置 RecyclerView 的布局管理器

在 Activity 中,将 RecyclerView 的布局管理器设置为 LinearLayoutManager,设置方向为水平方向。

val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
recyclerView.layoutManager = LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
  1. 将 Adapter 与 RecyclerView 相关联
val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
val adapter = MyAdapter(dataList)
recyclerView.adapter = adapter
示例代码

该示例程序显示了一个水平列表,其中每个单元格由 ImageView 和 TextView 组成:

data class ItemData(val image: Int, val title: String)

class MainActivity : AppCompatActivity() {
    private val dataList = mutableListOf<ItemData>()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        dataList.add(ItemData(R.drawable.ic_launcher_foreground, "Item 1"))
        dataList.add(ItemData(R.drawable.ic_launcher_foreground, "Item 2"))
        dataList.add(ItemData(R.drawable.ic_launcher_foreground, "Item 3"))
        dataList.add(ItemData(R.drawable.ic_launcher_foreground, "Item 4"))
        dataList.add(ItemData(R.drawable.ic_launcher_foreground, "Item 5"))
        dataList.add(ItemData(R.drawable.ic_launcher_foreground, "Item 6"))
        dataList.add(ItemData(R.drawable.ic_launcher_foreground, "Item 7"))
        dataList.add(ItemData(R.drawable.ic_launcher_foreground, "Item 8"))

        val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
        recyclerView.layoutManager = LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
        val adapter = MyAdapter(dataList)
        recyclerView.adapter = adapter
    }
}
结论

在安卓应用程序中使用 RecyclerView 来创建水平列表是一个非常熟悉的和强大的方案,并且其灵活性可以允许用户根据特定需求添加其他功能。在上述操作步骤和示例代码指南下,开发人员可以简单地实现水平列表功能。