📅  最后修改于: 2023-12-03 15:39:03.789000             🧑  作者: Mango
RecyclerView 是安卓提供的一个强大、熟悉和灵活的控件,可以用于动态地展示数据。它替代了 ListView 和 GridView。水平 RecyclerView 是在水平方向上滚动的 RecyclerView。
本文将向程序员介绍如何在安卓应用程序中使用 RecyclerView 来显示水平列表,并提供示例。
以下是在安卓应用中使用 RecyclerView 来创建水平列表的步骤:
在 build.gradle 文件的 dependencies{} 内添加 RecyclerView 库的依赖。
implementation 'com.android.support:recyclerview-v7:28.0.0'
在布局文件中声明 RecyclerView。
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
创建用于显示列表项的布局文件(例如,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>
创建 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)
在 Activity 中,将 RecyclerView 的布局管理器设置为 LinearLayoutManager,设置方向为水平方向。
val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
recyclerView.layoutManager = LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
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 来创建水平列表是一个非常熟悉的和强大的方案,并且其灵活性可以允许用户根据特定需求添加其他功能。在上述操作步骤和示例代码指南下,开发人员可以简单地实现水平列表功能。