I try setting the adapter to recycler view using BindingAdapter. So I wrote the codes but it is not called. Here is a two-method in BindingAdapter, and setAdapter is not called but setItemList is called. what's wrong with my code? I don't understand why the setAdapter method is not called.
BindingAdapter
@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>?,
adapter: ListAdapter<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" />
ViewModel
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
}
Main
private fun initViewModel(){
viewModel.setFavoriteTrackAdapter()
}
showLog("items 11: ${items.toString()}") is called but showLog("items 11: setAdapter") is not called .
here is the log message E/RecyclerView: No adapter attached; skipping layout