Android RecyclerView Адаптер не подключен (Kotlin) - PullRequest
0 голосов
/ 01 октября 2019

Я пытался отобразить элементы в моем фрагменте 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()
}

спасибо за вашу помощь

1 Ответ

0 голосов
/ 01 октября 2019

E / RecyclerView: адаптер не подключен;Пропуск макета.

Эта ошибка возникает при сбое подключения между Просмотр (родитель-потомок как фрагмент активности).

Попробуйте это

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
}
...