Android Kotlin База данных Firebase в реальном времени: RecyclerView показывает пустой - PullRequest
1 голос
/ 10 февраля 2020

Я прочитал все подобные вопросы, но не смог найти решение. Там нет никаких ошибок.

Не могли бы вы посмотреть эти коды и помочь найти проблему, почему эти коды не показывают данные из 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: -photo: -userid: - gYJMhNRZ5XPMzAROsoNyQOmdVFd2 -erid: --suse: --s: -gYJMhNRZ5XPMzAROsoNyQOmdVFd2 -184b4d0f-9cd3-413b-b4ed-3b6485066 -дата: -photo_id:

1 Ответ

0 голосов
/ 10 февраля 2020

введите описание изображения здесь Прежде всего, ваш ValueEventListener является избыточным. Таким образом, нет необходимости звонить Beginsicknesslistener вместо вызова BringSickness из onCreate

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()
            }
        })

}

Предложение: При кодировании вы должны соблюдать стандартное соглашение об именах .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...