Я пытался отобразить элементы в моем фрагменте recyclerview
, но он не работает.
E / RecyclerView: адаптер не подключен;пропускающий макет. << это сообщение журнала </p>
И я использую привязку данных, koin и некоторые базы.
Я думаю, что проблема возникает в этом коде во фрагменте |:
override fun initStartView() {
viewDataBinding.recyclerView.layoutManager = LinearLayoutManager(activity)
viewDataBinding.recyclerView.setHasFixedSize(true)
viewDataBinding.recyclerView.adapter = postAdapter
}
это часть 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)
}
Адаптер
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
}
Часть модуля Koin
var adapterPart = module {
factory {
PostAdapter()
}
спасибо за вашу помощь