问题描述
我尝试使用 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 (将#修改为@)