Привязка данных показывает индекс с именем элемента в recylerView - PullRequest
0 голосов
/ 19 марта 2020

Я новичок в привязке данных в android, и я пытаюсь загрузить обзор переработчика с некоторыми предметами. Предположим, у меня есть список элементов, и я хочу отобразить имя элемента вместе с порядковым номером, который автоматически увеличивается.

Я знаю, как отобразить имя элемента, но я застрял на том, как показать порядковый номер, который автоматически увеличивается. Это мой 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>

1 Ответ

0 голосов
/ 19 марта 2020

Я не совсем уверен, для чего вам нужен индекс внутри самого представления. Есть несколько способов получить индекс в коде, когда он имеет значение.

Однако вы можете просто добавить переменную в 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"/>
...