首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在回收视图kotlin中插入firebase快照

在回收视图kotlin中插入firebase快照
EN

Stack Overflow用户
提问于 2021-03-18 21:52:15
回答 1查看 112关注 0票数 0

我有一个简单的回收视图,它从数据库中读取一个列表,当我将数据记录到控制台时,我可以看到数据,但是它没有显示在回收器视图中。

下面的函数位于包含回收器视图的xml布局的kotlin片段类中。

代码语言:javascript
运行
复制
 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是包含回收器视图标记

的xml。

  • R.layout.users是数据xml

  • view.recyclerView是回收商视图标签

  • BalAdapter是适配器类,可以根据请求提供,但我觉得代码有正确的

  • UserInfo.Uids是数据类,包含nameemail

  • adapter变量是在override fun onCreateView

之前声明的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-19 03:48:03

看上去你不是在用任何数据填充回收视图。适配器总是使用空的ArrayList初始化。

代码语言:javascript
运行
复制
                                    /* This is an empty ArrayList */
adapter = BalAdapter(requireContext(),  ArrayList<UserInfo.Uids>(),  R.layout.users)

您需要将从firebase读取的值添加到数组列表中,然后将数组列表传递给适配器

例如:

代码语言:javascript
运行
复制
//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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66699641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档