📅  最后修改于: 2023-12-03 15:15:26.427000             🧑  作者: Mango
在开发 Android 应用程序时,Recyclerview 是一个常见的组件,可以用于显示列表数据,但有时我们需要将数据以网格的形式呈现。这时就需要使用 Gridview。本文将介绍如何使用 Kotlin 语言创建一个装饰了 Gridview 的 Recyclerview。
build.gradle
文件中,添加 Recyclerview 和 Kotlin 的依赖:dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.recyclerview:recyclerview:1.2.0'
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<GridView
android:id="@+id/gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3"/>
</LinearLayout>
在布局文件中,我们定义了一个 Recyclerview 和一个 Gridview,它们都覆盖整个布局。
Item
,用于存储 Gridview 的数据:data class Item(val name: String, val image: Int)
其中,name
用于保存字符串数据,image
用于保存图像资源 ID。
ItemAdapter
,并重写其中的 onCreateViewHolder()
,onBindViewHolder()
和 getItemCount()
方法:import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.recyclerview_item.view.*
class ItemAdapter(private val items: List<Item>) : RecyclerView.Adapter<ItemAdapter.ViewHolder>() {
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 onBindViewHolder(holder: ViewHolder, position: Int) {
holder.itemView.item_name.text = items[position].name
holder.itemView.item_image.setImageResource(items[position].image)
}
override fun getItemCount(): Int = items.size
class ViewHolder(view: View) : RecyclerView.ViewHolder(view)
}
其中,onCreateViewHolder()
创建新的 ViewHolder,onBindViewHolder()
绑定数据到 ViewHolder,getItemCount()
返回数据的数量。
private val items = listOf<Item>(
Item("Name1", R.drawable.image1),
Item("Name2", R.drawable.image2),
Item("Name3", R.drawable.image3),
Item("Name4", R.drawable.image4),
Item("Name5", R.drawable.image5),
Item("Name6", R.drawable.image6),
Item("Name7", R.drawable.image7),
Item("Name8", R.drawable.image8),
Item("Name9", R.drawable.image9),
Item("Name10", R.drawable.image10)
)
private lateinit var recyclerView: RecyclerView
private lateinit var gridView: GridView
其中,items
包含了 10 个 Item,recyclerView
和 gridView
是 Recyclerview 和 Gridview 的引用。
onCreate()
方法中,初始化 Recyclerview 和 Gridview,并通过 Adapter 将数据显示到 Recyclerview 和 Gridview 中:override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
recyclerView = findViewById(R.id.recyclerview)
gridView = findViewById(R.id.gridview)
recyclerView.adapter = ItemAdapter(items)
gridView.adapter = ItemAdapter(items)
}
至此,一个带有 Gridview 装饰的 Recyclerview 已经创建成功。
本文介绍了如何使用 Kotlin 创建一个装饰了 Gridview 的 Recyclerview。通过自定义适配器和数据类,我们可以轻松地将多种视图结合在一起,实现自定义的布局效果。