I tried to display items to my fragment recyclerview
but it does not work.
E/RecyclerView: No adapter attached; skipping layout. << this is Log Message
And I'm using databinding, koin and some bases.
I think the problem occurs at this code in fragment|:
override fun initStartView() {
viewDataBinding.recyclerView.layoutManager = LinearLayoutManager(activity)
viewDataBinding.recyclerView.setHasFixedSize(true)
viewDataBinding.recyclerView.adapter = postAdapter
}
this is some of BaseFragment
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
viewDataBinding = DataBindingUtil.inflate(inflater, layoutResourceId, container, false)
initStartView()
initDataBinding()
initAfterBinding()
viewDataBinding.executePendingBindings()
return inflater.inflate(layoutResourceId, container, false)
}
Adapter
private var postList = ArrayList<Post>()
fun setPost(postList: ArrayList<Post>) {
Log.d("Msg", "In setPost")
this.postList = postList
Log.d("Data", "${postList[0].title}")
notifyDataSetChanged()
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = PostHolder(parent)
override fun getItemCount(): Int {
return postList.size
}
override fun onBindViewHolder(holder: PostHolder, position: Int) {
postList[position].let { data ->
with(holder) {
title.text = data.title
text.text = data.text
create_at.text = data.created_at
owner.text = data.owner
}
}
}
class PostHolder(parent: ViewGroup) : RecyclerView.ViewHolder(
LayoutInflater.from(parent.context).inflate(R.layout.post_item, parent, false)
) {
val title = itemView.text_view_title
val text = itemView.text_view_text
val owner = itemView.text_view_owner
val create_at = itemView.text_view_create_time
}
Some of Koin Module
var adapterPart = module {
factory {
PostAdapter()
}
thanks for your help
E/RecyclerView: No adapter attached; skipping layout.
This error occurs when connecting failed between View (parent-child as activity-fragment).
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
viewDataBinding = DataBindingUtil.inflate(inflater, layoutResourceId, container, false)
initStartView()
initDataBinding()
initAfterBinding()
viewDataBinding.executePendingBindings()
//inflater.inflate(layoutResourceId, container, false)
//You already created binding of fragment, thus you just return binding.root (container of fragment)
return viewDataBinding.root
}