在androidx.recyclerview.widget.RecyclerView上找不到参数类型为boolean的属性“ app:fastScrollEnabled”的设置器

时间:2018-08-23 07:35:42

标签: android android-recyclerview android-databinding

我尝试设置ObservableField或String值,但仍然无法正常工作。如果我只是设置一个静态的true或false值而不是viewModel引用,那么它将起作用。

布局文件:

     <layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>

        <variable
                name="viewModel"
                type="app.viewmodel.ViewModel"/>
    </data>
 <androidx.recyclerview.widget.RecyclerView
                        android:id="@+id/recyclerview"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:scrollbars="vertical"
                        app:fastScrollEnabled="@{viewModel.isUserAdmin}"
                        app:fastScrollHorizontalThumbDrawable="@drawable/thumb_drawable"
                        app:fastScrollHorizontalTrackDrawable="@drawable/line_drawable"
                        app:fastScrollVerticalThumbDrawable="@drawable/thumb_drawable"
                        app:fastScrollVerticalTrackDrawable="@drawable/line_drawable"
                        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>
</layout>

ViewModel:

class AppointmentsViewModel()
{
     val isUserAdmin: Boolean = sharedPreferencesRepo.isUserAdmin
}

1 个答案:

答案 0 :(得分:1)

{ '0': '{"field":"doc_no","cond":"is","val":"","main_cond":"and"}', '1': '{"field":"doc_no","cond":"is","val":"","main_cond":"and"}' } 当前没有用于从代码设置快速滚动属性的公共方法。在撰写本文时,启用快速滚动的唯一方法是在布局XML中设置相关属性。 RecyclerView然后从其构造函数调用一个私有方法来进行设置。

数据绑定库在生成其适配器代码时,找不到RecyclerView属性的公共方法,这就是为什么会出现此错误的原因。只是不可能。

a request in the Issue Tracker可以为fastScrollEnabled甚至a comment there that points out the data binding limitation添加相关功能,但是目前看来它并不是一个高优先级。