由于这是我第一次在Kotlin编程,所以我在网上学习了一个教程,我只是想将我将从数据库中的表中获得的文本绑定到一个ViewModel上,我从一个我在网上看到的例子开始:

在这段代码中,我收到一个关于"itemView.userName.text="test"的错误,它不能识别‘用户名’,我不知道为什么.

使用此适配器

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.example.timetally.R
import com.example.timetally.repository.entity.TaskType

class TaskTypeAdapter : RecyclerView.Adapter<TaskTypeAdapter.ViewHolder>() {

    private var taskTypeList = emptyList<TaskType>()

    class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        fun bind(taskType: TaskType) {
            itemView.userName.text = "test"
        }
    }

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

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        holder.bind(taskTypeList[position])
    }

    override fun getItemCount(): Int = taskTypeList.size

    fun setData(userLtaskTypeListist: List<TaskType>) {
        this.taskTypeList = taskTypeList
        notifyDataSetChanged()
    }
}

并使用此XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="16dp">
    <TextView
        android:id="@+id/userName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp" />
    <TextView
        android:id="@+id/userEmail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="14sp"
        android:textColor="@android:color/darker_gray" />
    <TextView
        android:id="@+id/userPhone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="14sp"
        android:textColor="@android:color/darker_gray" />
    <TextView
        android:id="@+id/userWebsite"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="14sp"
        android:textColor="@android:color/darker_gray" />
</LinearLayout>

我已经try 了一个更简单的布局,只有一个文本视图,清理和重建项目,但我不能让它工作

推荐答案

这不是Android中使用视图绑定的方式. 首先,在模块的Gradle中,您必须启用视图绑定功能:

android {
    ...
    buildFeatures {
        viewBinding = true
    }
}

之后,您可以在视图持有器中创建绑定实例并使用它:

class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

    private val binding = TaskTypeLayoutBinding.bind(itemView)

    fun bind(taskType: TaskType) {
        binding.userName.text = "test"
    }
}

当您启用视图绑定功能时,将为所有布局自动生成一个绑定类.

Android相关问答推荐

安卓Gradle看不到dagger 柄

Kotlin Android VS Kotlin多平台

Android手柄注射周期错误,多个模块引用一个核心模块

如何用帆布在喷气背包中画一个圆环?

android回收器查看点击事件无响应

使用 JNI 从 Android 应用程序中使用 Kotlin/Native 预构建共享库

解决失败:Landroidx/compose/runtime/PrimitiveSnapshotStateKt

Jetpack Compose的val变量不能被重新分配

如何在 Jetpack Compose 中对齐按钮底部中心?

Android AGP 8 + Gradle 8 + Kotlin 1.8 导致 Kapt 出错

Kotlin File(path).walkTopDown() 找不到文件

安卓模拟器打不开

在 Jetpack Compose 的无状态 Compose 中管理条件逻辑

您如何衡量条形图的 4 个类别?

我的 react native 项目的发布签名 apk 没有在设备中打开,而且它创建的尺寸非常小

在开发过程中我应该把 mp4 文件放在哪里?

Jetpack Compose 中的按钮上的文本未更新

如何从构建的流对象中发出值

如何在android studio 2021.1中使用谷歌库以外的库

未使用的内容填充参数