DataBinding RecyclerView: не удается найти установщик для атрибута app: items

Я получаю эту ошибку, когда пытаюсь сделать ставку RecyclerView

Ошибка: (15, 22) Не удалось найти установщик для атрибута "app: items" с типом параметра android.databinding.ObservableArrayList<com.toong.databindingdemo.recycler.UserViewModel на android.support.v7.widget.RecyclerView.

Вот мой код:

<?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">
    <data>
        <variable
            name="usersViewModel"
            type="com.toong.databindingdemo.recycler.UsersViewModel" />
    </data>
    <android.support.v7.widget.RecyclerView
        android:id="@+id/activity_users_recycler"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:items="@{usersViewModel.users}"
        />
</layout>

Но в UsersViewModel у меня уже есть публичный массив пользователей

package com.toong.databindingdemo.recycler;

import android.databinding.BaseObservable;
import android.databinding.Bindable;
import android.databinding.ObservableArrayList;

public class UsersViewModel extends BaseObservable{
    @Bindable
    public ObservableArrayList<UserViewModel> users;

    public UsersViewModel()
    {
        this.users = new ObservableArrayList<>();
    }
}

У меня есть чистый и перестроенный проект, но он все еще не работает. Как исправить эту ошибку?


person Linh    schedule 03.11.2016    source источник


Ответы (1)


В RecyclerView нет такого свойства, как app:items. Для этого вам нужно создать собственный метод привязки

@BindingAdapter("items")
public static void entries(RecyclerView recyclerView, String[] array) {
    //write your code to set RecyclerView adapter.
}

измените тип array на требуемый тип данных.

person Ravi    schedule 03.11.2016