📜  gridview 项目装饰 recyclerview kotlin (1)

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

Gridview 项目装饰 RecyclerView Kotlin

在开发 Android 应用程序时,Recyclerview 是一个常见的组件,可以用于显示列表数据,但有时我们需要将数据以网格的形式呈现。这时就需要使用 Gridview。本文将介绍如何使用 Kotlin 语言创建一个装饰了 Gridview 的 Recyclerview。

步骤
  1. build.gradle 文件中,添加 Recyclerview 和 Kotlin 的依赖:
dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.recyclerview:recyclerview:1.2.0'
}
  1. 创建一个包含 Recyclerview 和 Gridview 的布局文件: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,它们都覆盖整个布局。

  1. 创建一个数据类 Item,用于存储 Gridview 的数据:
data class Item(val name: String, val image: Int)

其中,name 用于保存字符串数据,image 用于保存图像资源 ID。

  1. 创建一个 RecyclerView 的适配器 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() 返回数据的数量。

  1. 在 Activity 中,定义一个数据列表和 Recyclerview 和 Gridview 的引用:
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,recyclerViewgridView 是 Recyclerview 和 Gridview 的引用。

  1. 在 Activity 的 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。通过自定义适配器和数据类,我们可以轻松地将多种视图结合在一起,实现自定义的布局效果。