设置 recyclerview 适配器时 BindingAdapter 不起作用

问题描述

我尝试使用 BindingAdapter 将适配器设置为回收器视图。 所以我写了代码但它没有被调用。 这里是BindingAdapter中的两个方法,不调用setAdapter而是调用setItemList。 我的代码有什么问题?我不明白为什么不调用 setAdapter 方法

绑定适配器

    @BindingAdapter("setAdapter")
    @JvmStatic fun setAdapter(view: RecyclerView,adapter: listadapter<FavoriteTrackEntity,RecyclerView.ViewHolder>) {
        showLog("items 11: setAdapter")
        val layoutManager = linearlayoutmanager(view.context)
        view.adapter = adapter
        view.layoutManager = layoutManager
    }

    @BindingAdapter( "setItemList","setAdapter")
    @JvmStatic fun setItemList(view: RecyclerView,items: List<FavoriteTrackEntity>?,RecyclerView.ViewHolder>) {
        showLog("items 11: ${items.toString()}")
        adapter.submitList(items)
        adapter.notifyDataSetChanged()
    }

xml

   <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/favoriteTrackRV"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:setAdapter="@{viewmodel.favoriteTrackAdapter}"
        app:setItemList="@{viewmodel.favoriteTrackItemList}"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

视图模型

    private var _favoriteTrackAdapter :mutablelivedata<FavoriteTrackAdapter> = mutablelivedata()
    val favoriteTrackAdapter : LiveData<FavoriteTrackAdapter> = _favoriteTrackAdapter

    val favoriteTrackItemList : LiveData<List<FavoriteTrackEntity>> = localRepository.observeFavoriteTrackList()

    fun setFavoriteTrackAdapter(){
        val adapter = FavoriteTrackAdapter()
        _favoriteTrackAdapter.value = adapter
    }

主要

    private fun initviewmodel(){
        viewmodel.setFavoriteTrackAdapter()
    }

showLog("items 11: ${items.toString()}") 被调用但 showLog("items 11: setAdapter") 未被调用。 这是日志消息 E/RecyclerView: No adapter attached; skipping layout

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...