当前位置: 首页 > 知识库问答 >
问题:

Android kotlin两种方法数据绑定问题

宇文兴言
2023-03-14

我试图在回收器视图中使用数据绑定,我有问题。在data-variable上,我不能选择真正的类型(相反,我可以选择type作为默认包。然后我不能访问适配器类上的变量。我在适配器上得到的错误是:binding.curmovie=movie。我得到的错误是:不能访问类movieItem检查模块类路径是否缺少或冲突的依赖关系绑定

movieitem.kt文件

import com.google.gson.annotations.SerializedName

data class MovieItem(

    @SerializedName("popularity") val popularity: Double,
    @SerializedName("id") val id: Int,
    @SerializedName("video") val video: Boolean,
    @SerializedName("vote_count") val vote_count: Int,
    @SerializedName("vote_average") val vote_average: Double,
    @SerializedName("title") val title: String?,
    @SerializedName("release_date") val release_date: String?,
    @SerializedName("original_language") val original_language: String?,
    @SerializedName("original_title") val original_title: String?,
    @SerializedName("genre_ids") val genre_ids: List<Int>,
    @SerializedName("backdrop_path") val backdrop_path: String?,
    @SerializedName("adult") val adult: Boolean,
    @SerializedName("overview") val overview: String?,
    @SerializedName("poster_path") val poster_path: String?
)

list_item.xml文件

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
        <variable
            name="curMovie"
            type="MovieItem" />
    </data>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">


        <TextView
            android:id="@android:id/text1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:minHeight="?android:attr/listPreferredItemHeightSmall"
            android:paddingStart="?android:attr/listPreferredItemPaddingStart"
            android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
            android:text="@{curMovie.title}"
            android:textAppearance="?android:attr/textAppearanceListItemSmall"
            app:layout_constraintBottom_toBottomOf="parent"
            tools:text="my movie" />


    </androidx.constraintlayout.widget.ConstraintLayout>

</layout>

movieadapter.kt文件

class MovieAdapter() : RecyclerView.Adapter<MovieAdapter.MovieViewHolder>() {

    var moviesList: List<MovieItem> = ArrayList()



    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MovieViewHolder {
        val inflater = LayoutInflater.from(parent.context)

        val binding = ListItemBinding.inflate(inflater)


        return MovieViewHolder(binding)

    }

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

    override fun onBindViewHolder(holder: MovieViewHolder, position: Int) {
        val movie = moviesList.get(position)

        holder.setMovieData(movie)
    }

    class MovieViewHolder(val binding: ListItemBinding) : RecyclerView.ViewHolder(binding.root) {
        fun setMovieData(movie: MovieItem) {
            binding.curMovie = movie
        }
    }

    fun setMovieList(moviesList : List<MovieItem>){
        this.moviesList = moviesList
        notifyDataSetChanged()
    }

}

共有1个答案

曹高阳
2023-03-14

最有可能的情况是,pakage名称以大写字母https://stackoverflow.com/a/54752522/11738109开头,或者在list_item.xml中使用完整的类路径而不是简短的MovieItem

 类似资料:
  • 我尝试将属性和一些数据绑定到模板,但下面的代码不起作用。我需要的是呈现n个模板的数量取决于printedForms对象的数量,并在每个模板中实现来自适当对象的数据。请告诉我我的代码有什么问题。 注意:控制台中有如下警告:[Vue warn]:计算表达式“printedForm.docNumber”时出错:TypeError:无法读取未定义(在组件中找到)的属性“docNumber”) 我的VueJ

  • 本文向大家介绍C# TextBox数据绑定的方法,包括了C# TextBox数据绑定的方法的使用技巧和注意事项,需要的朋友参考一下 经常写用一个TextBox显示某个对象,然后编辑之后再保存的程序。以前都是在TextBox_TextChanged事件中修改对象的值,或者保存的时候再读取TextBox.Text属性保存对象的值。这样比较麻烦,而且经常容易出错。后来了解了C#的数据绑定,发现能够很好的

  • 当我将android Studio 3.2.0更新为3.2.1时。我已经使用数据绑定,当运行项目时会显示这样的错误,如果我错了,请建议我。 要求:项目:应用 项目格拉德尔 应用程序。格拉德尔 如果我错了,请建议我。

  • 本文向大家介绍MySQL删除数据库的两种方法,包括了MySQL删除数据库的两种方法的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享了两种MySQL删除数据库的方法,供大家参考,具体内容如下 第一种方法:使用 mysqladmin 删除数据库 使用普通用户登陆mysql服务器,你可能需要特定的权限来创建或者删除 MySQL 数据库。 所以我们这边使用root用户登录,root用户拥有最高权限

  • 本文向大家介绍C# DataGridView绑定数据源的方法,包括了C# DataGridView绑定数据源的方法的使用技巧和注意事项,需要的朋友参考一下 开始以前,先认识一下WinForm控件数据绑定的两种形式,简单数据绑定和复杂数据绑定。 1. 简单的数据绑定 例1 简单的数据绑定是将用户控件的某一个属性绑定至某一个类型实例上的某一属性。 采用如下形式进行绑定:引用控件.DataBinding

  • 问题内容: 在下面的示例中,为什么初始呈现值不是?您将如何解决? 这里的例子 HTML: JS: 问题答案: 问题是当插值尚未完成时,您正在更新视图值。 所以删除 或替换为 将解决问题。