如何在AndroidKotlin中实现CardView?

问题描述

该想法是创建一次只显示一张卡片的cardview,但是在 Main.kt 文件中实现cardview时遇到了困难。

我从CardStackView https://github.com/yuyakaido/CardStackView/tree/master/sample获取了sampleCode,并尝试使其适用于CardView,因为我只需要一张卡而不是堆栈。但是,该卡应该可以从CardStackView中滑动。因此, item_text_backside.xml 应该显示 activity_main.xml 的卡片视图中。我猜适配器除了 Main.kt 文件之外的其他代码都很好。

平台: Android 语言:科特林

预先感谢和亲切问候。

代码如下:

Main.kt

private val cardViewBackside by lazy { findViewById<CardView>(R.id.card_view_backside)}
private val adapterBackside by lazy { CardAdapterBackside(createSpotsBackside()) }

private fun createSpotsBackside(): List<Spot> {

spotsBackside.add(SpotBackside(text= "ABC"))
spotsBackside.add(SpotBackside(text= "ABC"))
spotsBackside.add(SpotBackside(text= "ABC"))
spotsBackside.add(SpotBackside(text= "ABC"))

return spotsBackside

SpotBackside.kt

package com.example.anmeldenregistrieren

data class SpotBackside(val text: String) {}

CardAdapterBackside.kt


import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView

class CardAdapterBackside(
    private var spotsBackside: List<SpotBackside> = emptyList()
) : RecyclerView.Adapter<CardAdapterBackside.ViewHolder>() {

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

    override fun onBindViewHolder(holder: ViewHolder,position: Int) {
        val spotBackside = spotsBackside[position]
        holder.textBackside.text = "${spotBackside.text}"
    }

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

    fun setSpotsBackside(spotsBackside: List<SpotBackside>) {
        this.spotsBackside = spotsBackside
    }

    fun getSpotsBackside(): List<SpotBackside> {
        return spotsBackside
    }

    class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
        val textBackside: TextView = view.findViewById(R.id.item_name_backside)
        }
    }

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout


 xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<androidx.cardview.widget.CardView
                android:id="@+id/card_view_backside"
                android:layout_width="731dp"
                android:layout_height="280dp"
                android:layout_above="@+id/button_container"
                android:layout_below="@+id/close_btn"
                android:layout_alignParentStart="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentEnd="true"
                android:layout_alignParentRight="true"
                android:layout_marginStart="-1dp"
                android:layout_marginLeft="-1dp"
                android:layout_marginTop="3dp"
                android:layout_marginEnd="1dp"
                android:layout_marginRight="1dp"
                android:layout_marginBottom="-2dp"
                android:clipToPadding="false"
                android:padding="4dp">
                >

            </androidx.cardview.widget.CardView>
</androidx.drawerlayout.widget.DrawerLayout>

item_text_backside.xml

<?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="match_parent"
    android:background="?attr/selectableItemBackground"
    android:foreground="?attr/selectableItemBackground"
    app:cardUseCompatPadding="true"
    app:cardPreventCornerOverlap="false"
    app:cardCornerRadius="8dp"
    app:cardBackgroundColor="@android:color/white">

    <com.makeramen.roundedimageview.RoundedImageView
        android:id="@+id/item_image_backside"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        app:riv_corner_radius="8dp"/>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:padding="16dp"
        android:background="@drawable/gradation_black">

        <TextView
            android:id="@+id/item_name_backside"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@android:color/white"
            android:textSize="26sp"
            android:textStyle="bold"
            android:text="abc"/>

    </LinearLayout>

</androidx.cardview.widget.CardView>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)