Android RecyclerView 未连接适配器 (Kotlin)

Android RecyclerView No adapter attached (Kotlin)

我试图在我的片段中显示项目 recyclerview 但它不起作用。

E/RecyclerView: No adapter attached; skipping layout. << this is Log Message

我正在使用数据绑定、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()
}

感谢您的帮助

E/RecyclerView: No adapter attached; skipping layout.

View(父子作为 activity-片段)之间的连接失败时会出现此错误。

试试这个

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
}