【发布时间】:2021-11-28 21:48:39
【问题描述】:
我是 Kotlin 编程语言的新手。我对 RecyclerView 和 ViewBinding 有一些疑问。我的英语可能不太好。我对此感到抱歉。但我会尽力解释。如果你能回答我的问题,我会很高兴的。请阅读问题,看图片
1.) 我们将视图提供给 LandmarkHolder 类的构造函数。但是当我们将此视图发送给 RecyclerView.ViewHolder 类的构造函数时,我们会创建 binding.root。
a) 据我所知,我需要“以相同的方式”在 Recycler.ViewHolder 的构造函数中编写 RecyclerViewRowBinding 的对象(我将其编写为绑定)并将其发送到那里。但是为什么我必须写 binding.root 而不是“绑定”?为什么我不能只输入“绑定”?因为绑定本身已经有了设计。
2.) 在制作 Layout Inflater 时,我们通常使用旧方法(R.layout....)访问 XML 文件并对其进行充气,即将其转换为 java 代码。这里的结构发生了变化。当然是再转成java代码了,但是有一个我解决不了的困惑情况:
创建了一个名为 RecyclerRowBinding 的 recycler_row.xml 文件类。
这个类有一个 inflate 方法。我从它的网站上阅读。此外,该类直接引用布局中与其相关的视图的 id。现在卡在我脑海里的是:我在这里膨胀什么?因为在旧的用法(带有finviewbyid)中,我们在编写inflate方法时,是在iflate方法内部添加了一个源xml文件。(如CardView)但是这个新方法没有它。 parent写完后attachtoParent写为False。
3.)我们所说的这个父级代表我的 RecyclerView?
4.) onBindViewHolder 函数中的 holder 对象属于 Landmarkholder 类。所以它使用这个类的属性。但我看到它可以访问一个叫做 itemView 的东西。下面是 ItemView 如何与 Landmarkholder 类相关联。但我正在查看类本身,没有定义与此 itemView 相关的任何内容。这如何到达 itemView?当然,调用itemview的目的是调用context。如果上下文存在于其中,则 itemview 也派生自另一个类。它是从 View 类派生的吗?我想 View 类有这个上下文是对的吗?如何使用“holder”对象调用这个 itemView?
5.) 这个 onCreateViewHolder 返回 LandmarkHolder(binding) 对象。然后需要在其他地方调用此函数才能使其工作。 (当然,通常应该调用它)但是它是从哪里调用的呢?在模拟器本身上?
【问题讨论】:
-
请发布您的代码的实际文本,而不是代码的图片。它使阅读变得更容易,并且回答您的人能够复制粘贴它,并使问题出现在搜索结果中。
标签: kotlin android-recyclerview adapter android-viewbinding