Android Kotlin Firebase实时数据库:RecyclerView显示为空

会员

我已经阅读了所有类似的问题,但是找不到解决方案。没有任何错误。

您能否查看这些代码并帮助查找为什么这些代码不显示Firebase数据的问题。查询有问题吗?还是RecyclerView?或适配器?

class OurResults : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_allresults)
        actionBar.setBackgroundDrawable(resources.getDrawable(R.drawable.actionbar))

        BeginFirebaseAuthListener()
        Beginsicknesslistener()
    }

    var mValueEventListener:ValueEventListener=object :ValueEventListener{
        override fun onCancelled(p0: DatabaseError) {
            TODO("not implemented")
        }
        override fun onDataChange(p0: DataSnapshot) {
            BringSickness()
        }
    }

    private fun BringSickness() {
        if(allsickness==null){
            allsickness=ArrayList<usersickness>()
        }
        mySicknessReferans=FirebaseDatabase.getInstance().getReference()
        var userid=FirebaseAuth.getInstance().currentUser?.uid
        var myQuery=mySicknessReferans?.child("sickness/users/$user_id"+"/")!!
            .addListenerForSingleValueEvent(object :ValueEventListener{
                override fun onCancelled(p0: DatabaseError) {
                    TODO("not implemented")
                }
                override fun onDataChange(p0: DataSnapshot) {
                    for(Onesickness in p0!!.children){
                        var tempsickness=usersickness()  
                        tempsickness.photo_result=Onesickness.getValue(usersickness::class.java)!!.photo_result
                        tempsickness.date=Onesickness.getValue(usersickness::class.java)!!.date
                        allsickness?.add(tempsickness)
                        myAdapter?.notifyDataSetChanged()
                    }
                }
            })
        if(myAdapter==null){
            initsicknesslist()
        }
    }

    private fun initsicknesslist() {
        myAdapter= SicknessRecyclerViewAdapter(this,allsickness!!)
        rv_sickness.adapter=myAdapter
        rv_sickness.layoutManager=LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)
        rv_sickness.scrollToPosition(myAdapter?.itemCount!!-1)
    }

    private fun Beginsicknesslistener() {
        mySicknessReferans=FirebaseDatabase.getInstance().getReference()
            .child("sickness/users/"+FirebaseAuth.getInstance().currentUser?.uid)
        mySicknessReferans?.addValueEventListener(mValueEventListener)
    }

    private fun BeginFirebaseAuthListener() {
        mAuthListener=object:FirebaseAuth.AuthStateListener{
            override fun onAuthStateChanged(p0: FirebaseAuth) {
                var myUser=p0.currentUser
                if(myUser==null){
                    var intent=Intent(this@allresults,LoginActivity::class.java)
                    startActivity(intent)
                    finish()
                }
            }
        }
    }


    override fun onStart() {
        super.onStart()
        FirebaseAuth.getInstance().addAuthStateListener (mAuthListener!!)
    }

    override fun onStop() {
        super.onStop()
        if(mAuthListener!=null){
            FirebaseAuth.getInstance().removeAuthStateListener (mAuthListener!!)
        }
    }

    override fun onResume() {
        super.onResume()
    }

}

数据库的结构是: --user - xGKiiLnf6TWhJeThkeKbZxtwHr1 -email: -照片:-userid: - gYJMhNRZ5XPMzAROsoNyQOmdVFd2 -email: -照片:-userid:--sickness -用户-gYJMhNRZ5XPMzAROsoNyQOmdVFd2 -184b4d0f-9cd3-413b-b4ed-3b6485066 -date: -photo_id:

阿萨杜扎曼医师

首先在这里输入图像描述ValueEventListener是多余的。因此,无需致电Beginsicknesslistener而是BringSicknessonCreate

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    .....

    BeginFirebaseAuthListener()
    //Beginsicknesslistener()

    BringSickness()
}

然后解析内部的疾病数据,BringSickness如下所示:

private fun BringSickness() {
    if(allsickness == null){
        allsickness = ArrayList<usersickness>()
    }

    if(myAdapter == null){
        initsicknesslist()
    }

    mySicknessReferans = FirebaseDatabase.getInstance().getReference()
    var userid = FirebaseAuth.getInstance().currentUser?.uid
    var myQuery = mySicknessReferans?.child("sickness/users/$user_id"+"/")!!
        .addListenerForSingleValueEvent(object : ValueEventListener {
            override fun onCancelled(p0: DatabaseError) {
                TODO("not implemented")
            }
            override fun onDataChange(p0: DataSnapshot) {
                for(Onesickness in p0!!.children){
                    var tempsickness = Onesickness.getValue(usersickness::class.java)

                    if(tempsickness != null) {
                        allsickness?.add(tempsickness)
                    }
                }

                //Update adapter after collecting all the data
                myAdapter?.notifyDataSetChanged()
            }
        })

}

建议:在编码过程中应遵循标准命名约定

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法显示Android中Firebase实时数据库中的随机数据

无法在Android中更新Firebase实时数据库

将Android Room数据库与Firebase实时数据库链接

在Android中从Firebase实时数据库检索数据

用于Firebase实时数据库/ Firebase身份验证的Android唯一密钥

Firebase实时数据库未检索版本apk中的数据[Android]

如何使用Kotlin从Firebase实时数据库检索数据

从Firebase实时数据库,Android Studio,Java获取数据

文件已上传但未显示在Firebase实时数据库中-Android Studio

首次安装android应用时,如何从Firebase实时数据库获取数据库

Firebase实时数据库通过uid检索数据并将其放入Varable Kotlin android

将多个图像上传到Firebase存储并将下载URL保存到Android Studio Kotlin中的实时数据库

Firebase实时数据库Android Java

Android:Firebase实时数据库

过滤Android实时数据库

Android Firebase - 从 Firebase 实时数据库中检索特定值

Android Firebase 实时数据库获取数据太慢

Firebase 实时数据库 - 关于事件 - Javascript Deltasnapshot 和 Android Java DataSnapshot 之间的区别

如何从android中的firebase实时数据库中获取数据

使用 kotlin 在特定时期更新 firebase 实时数据库

Firebase 实时数据库读写数据协议与android

在 Android 上的 Firebase 实时数据库中移动数据(复制然后删除)

从 Firebase(实时数据库)检索数据到列表中(Kotlin)

一些参数被插入到 firebase 实时数据库 Android Studio

在 recyclerview kotlin 中显示来自 firebase 实时数据库的数据

Android Firebase 实时数据库博客应用

Android kotlin mvvm 更新实时数据

Kotlin Firebase 实时数据库 removeValue()

JAVA Android studio 不向 Firebase 实时数据库发送数据