android - 在recyclerview kotlin中插入firebase快照
问题描述
我有一个简单的回收器视图,它从数据库中读取列表,当我将它们记录到控制台时我可以看到数据,但它没有显示在回收器视图中
下面的函数在包含回收器视图的 xml 布局的 kotlin 片段类中
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?,
): View? {
// Inflate the layout for this fragment
val view: View = inflater.inflate(R.layout.fragment_chat_list, container, false)
view.recyclerView?.setHasFixedSize(true)
view.recyclerView?.layoutManager = LinearLayoutManager(context)
ref?.addChildEventListener(object : ChildEventListener {
override fun onChildAdded(snapshot: DataSnapshot, previousChildName: String?) {
val bal = snapshot.getValue<UserInfo.Uids>()
if (bal != null) {
UserInfo.Uids(bal.email,bal.uid,bal.displayName)
}
Log.d("RecyclerView", UserInfo.Uids().toString())
Log.d("RecyclerView", bal.toString())
adapter = BalAdapter(requireContext(), ArrayList<UserInfo.Uids>(), R.layout.users)
adapter!!.notifyDataSetChanged()
}
override fun onChildChanged(snapshot: DataSnapshot, previousChildName: String?) {
TODO("Not yet implemented")
}
override fun onChildRemoved(snapshot: DataSnapshot) {
TODO("Not yet implemented")
}
override fun onChildMoved(snapshot: DataSnapshot, previousChildName: String?) {
TODO("Not yet implemented")
}
override fun onCancelled(p0: DatabaseError) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
})
return view
}
R.layout.fragment_chat_list
是包含recycler view标签的xmlR.layout.users
是数据xmlview.recyclerView
是回收站视图标签BalAdapter
是适配器类,可以按要求提供,但我感觉那里的代码是正确的UserInfo.Uids
是数据类,包含name
和email
adapter
变量在之前声明override fun onCreateView
解决方案
看起来你没有用任何数据填充 recyclerview。适配器总是用空初始化ArrayList
:
/* This is an empty ArrayList */
adapter = BalAdapter(requireContext(), ArrayList<UserInfo.Uids>(), R.layout.users)
您需要将从 firebase 读取的值添加到数组列表中,然后将该数组列表传递给适配器
例如:
//Before any firebase requests:
val balList = ArrayList<UserInfo.Uids>()
adapter = BalAdapter(requireContext(), balList, R.layout.users)
...
//After you get data from firebase
val bal = snapshot.getValue<UserInfo.Uids>()
balList.add(bal)
adapter.notifyDataSetChanged()
推荐阅读
- javascript - 如何在画布内拖动图像而不在图像上重绘形状?
- graphql - GraphQL 客户端应该使用哪种 Http 方法?
- mesh - 如何在gmsh中提取边界节点处的法线向量?
- android - 此错误的原因是什么以及如何解决?
- javascript - 钥匙是唯一的,但仍然出现“遇到两个孩子用相同的钥匙”
- integration - drools-showcase 和 kie-server-showcase 集成
- aspnetboilerplate - 服务于 ASP.NET BoilerPlate API 和 VUEJS 应用程序,CORS 阻止网络上的客户端
- python - Tkinter:如何在画布中设置文本小部件的相对宽度?
- angular - 如何使用 Spring Boot 保护单页应用程序
- python - 用于设置 python.autoComplete.extraPath 的 VSCode Python 动态路径