Я создал простое приложение, которое добавляет пользователей в базу данных.
Я сейчас пытаюсь отобразить этих пользователей в своей активности (обновление в реальном времени).
Я создал ListView
и считаю, что мне нужно присвоить данные этому списку (массив?), Используя addChildEventListener
. Я никогда не делал этого раньше, поэтому я был бы признателен за помощь в его работе.
Пожалуйста, смотрите мой код ниже. Спасибо.
Users.kt
data class Users(
var name: String? = "",
var telephone: String? = ""
)
activity_main. xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ui.MainActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et_user_name"
android:hint="Name"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et_user_telephone"
android:hint="Telephone"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bt_add_user"
android:text="Add User"/>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lv_show_users"/>
</LinearLayout>
MainActivity.kt
package com.example.only_db.ui
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.example.only_db.R
import com.example.only_db.db.Users
import com.google.firebase.database.*
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
private lateinit var mDatabase: DatabaseReference
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
mDatabase = FirebaseDatabase.getInstance().reference
bt_add_user.setOnClickListener {
val name = et_user_name.text.toString().trim()
val telephone = et_user_telephone.text.toString().trim()
writeNewUser(name, telephone)
}
val childEventListener = object : ChildEventListener {
override fun onCancelled(p0: DatabaseError) {
TODO("Not yet implemented")
}
override fun onChildMoved(p0: DataSnapshot, p1: String?) {
TODO("Not yet implemented")
}
override fun onChildChanged(p0: DataSnapshot, p1: String?) {
TODO("Not yet implemented")
}
override fun onChildAdded(p0: DataSnapshot, p1: String?) {
TODO("Not yet implemented")
}
override fun onChildRemoved(p0: DataSnapshot) {
TODO("Not yet implemented")
}
}
mDatabase!!.addChildEventListener(childEventListener)
}
private fun writeNewUser(name: String, telephone: String) {
val user = Users(name, telephone)
mDatabase.child("Users").push().setValue(user)
}
}