簡體   English   中英

Android RecyclerView 未連接適配器(Kotlin)

[英]Android RecyclerView No adapter attached (Kotlin)

我試圖在我的片段recyclerview中顯示項目,但它不起作用。

E/RecyclerView:沒有附加適配器; 跳過布局。 << 這是日志消息

我正在使用數據綁定、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:沒有附加適配器; 跳過布局。

視圖之間的連接失敗時會發生此錯誤(父子作為活動片段)。

嘗試這個

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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM