android - 数据绑定在 recylerView 中显示带有项目名称的索引
问题描述
我是 android 中数据绑定的新手,我正在尝试用一些项目加载一个 recyclerview。假设我有一个项目列表,我想显示项目名称以及自动递增的索引号。
我知道如何显示项目名称,但我一直坚持如何显示自动递增的索引号。这是我的 xml 代码
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/apk/res-auto"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="ean"
type="com.xpetize.smartshop.models.EAN" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="5dp">
<android.support.v7.widget.CardView
bind:contentPadding="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:weightSum="10"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/index"
android:text="???????????????????"
android:textColor="#000"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"/>
<TextView
android:text="@{ean.itemName}"
android:textColor="#000"
android:id="@+id/item_name"
android:layout_width="0dp"
android:layout_weight="9"
android:layout_height="wrap_content"/>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
</layout>
解决方案
我不完全确定视图本身内部需要什么索引。有几种方法可以在重要时在代码中获取索引。
但是,您可以像这样简单地将变量添加到您的 xml:
<variable name="index" type="int"/>
然后只需将其设置在您的适配器中
override fun onBindViewHolder(holder: BindingHolder, position: Int) {
val model = data[position]
holder.binding.setVariable(bindingModelId, model)
holder.binding.index = position
setupRowClickHandler(holder, model, position)
holder.binding.executePendingBindings()
}
然后在你的xml中使用它。
<TextView
android:id="@+id/index"
android:text="@{index}"
android:textColor="#000"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"/>