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
}
我试图在我的片段中显示项目 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
}