You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio Kotlin中卡片跳转及MutableList传递至列表组件实现方法

实现步骤

1. 定义规范的Data Class

遵循Kotlin命名规范调整类名(类名首字母大写),实现你需要的数据结构:

data class Details(
    var id: String,
    var image: Int, // 对应drawable资源ID,例如R.drawable.villa_icon
    var title: String
)

2. 初始化MutableList数据

填充4个卡片的示例数据,替换为你自己的资源ID和标题即可:

val cardData = mutableListOf(
    Details("1", R.drawable.villa_icon, "Villa"),
    Details("2", R.drawable.apartment_icon, "Apartment"),
    Details("3", R.drawable.hotel_icon, "Hotel"),
    Details("4", R.drawable.cabin_icon, "Cabin")
)

3. 首页卡片列表实现(基于RecyclerView)

3.1 添加RecyclerView依赖

在app模块的build.gradle.kts(或build.gradle)中添加依赖:

dependencies {
    implementation("androidx.recyclerview:recyclerview:1.3.2")
}

3.2 创建单个卡片布局(item_card.xml)

用CardView包裹卡片内容,示例布局如下:

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="8dp"
    app:cardCornerRadius="8dp"
    app:cardElevation="4dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="120dp"
        android:orientation="horizontal"
        android:padding="16dp"
        android:gravity="center_vertical">

        <ImageView
            android:id="@+id/cardImage"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:scaleType="centerCrop"/>

        <TextView
            android:id="@+id/cardTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:textSize="20sp"
            android:textStyle="bold"/>

    </LinearLayout>

</androidx.cardview.widget.CardView>

3.3 编写RecyclerView Adapter

实现Adapter绑定数据并处理点击事件:

class CardAdapter(
    private val cardList: List<Details>,
    private val onCardClick: (Details) -> Unit
) : RecyclerView.Adapter<CardAdapter.CardViewHolder>() {

    inner class CardViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        val cardImage: ImageView = itemView.findViewById(R.id.cardImage)
        val cardTitle: TextView = itemView.findViewById(R.id.cardTitle)
    }

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

    override fun onBindViewHolder(holder: CardViewHolder, position: Int) {
        val card = cardList[position]
        holder.cardImage.setImageResource(card.image)
        holder.cardTitle.text = card.title

        // 绑定点击事件
        holder.itemView.setOnClickListener {
            onCardClick(card)
        }
    }

    override fun getItemCount(): Int = cardList.size
}

3.4 在首页Activity中配置RecyclerView

以MainActivity为例,完成列表初始化和跳转逻辑:

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

        val recyclerView: RecyclerView = findViewById(R.id.recyclerView)
        // 设置2列网格布局,也可改用LinearLayoutManager实现单列
        recyclerView.layoutManager = GridLayoutManager(this, 2)
        val adapter = CardAdapter(cardData) { card ->
            // 根据卡片标题跳转对应详情页
            when(card.title) {
                "Villa" -> startActivity(Intent(this, VillaListActivity::class.java))
                "Apartment" -> startActivity(Intent(this, ApartmentListActivity::class.java))
                "Hotel" -> startActivity(Intent(this, HotelListActivity::class.java))
                "Cabin" -> startActivity(Intent(this, CabinListActivity::class.java))
                else -> {}
            }
        }
        recyclerView.adapter = adapter
    }
}

4. 创建详情页面

分别创建VillaListActivity、ApartmentListActivity等对应的Activity类和布局文件,填充页面内容即可。

内容的提问来源于stack exchange,提问作者Badriya Haddad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:35:16