如何解决如何使用RecyclerView适配器在Firebase数据库中检索数据
我正在制作一个样机应用程序,以使用RecyclerView测试Firebase实时数据库。
您能告诉我为什么以及如何检索数据库大小吗?而不是孩子的name
的大小?
当前大小为23,但我不知道如何获取该数据。
主要活动
class MainActivity : AppCompatActivity() {
var childrenCount: Long = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button_storeMovie_main.setOnClickListener {
Log.d("MainActivity","Storing data in FirebaseDatabase")
Toast.makeText(this,"Storing data...",Toast.LENGTH_SHORT).show()
storeMovieInFirebaseDatabase()
}
button_debug_main.setOnClickListener {
val database = FirebaseDatabase.getInstance().getReference("/movies/")
database.addValueEventListener(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
snapshot.children.forEach {
Log.d("MainActivity","$it")
val dataValue = it.getValue(Movie::class.java)
if (dataValue != null) recyclerView_main.adapter = MainAdapter(dataValue)
}
childrenCount = snapshot.childrenCount
Log.d("MainActivity","Number of children = $childrenCount")
}
override fun onCancelled(error: DatabaseError) {
}
})
}
}
private fun storeMovieInFirebaseDatabase() {
val uid = UUID.randomUUID().toString()
val title = editText_inputTitle_main.text.toString()
val price = editText_inputPrice_main.text.toString()
val movieData = Movie(title,price)
FirebaseDatabase.getInstance().getReference("/movies/$uid").setValue(movieData)
.addOnSuccessListener {
Log.d("MainActivity","Data stored successfully | UID = $uid")
Toast.makeText(this,"Data stored successfully",Toast.LENGTH_SHORT).show()
return@addOnSuccessListener
}
.addOnFailureListener{
Log.d("MainActivity","Data failed to store")
Toast.makeText(this,"Data failed to store",Toast.LENGTH_SHORT).show()
return@addOnFailureListener
}
}
}
class Movie(val name: String,val price: String) {
constructor(): this("","")
}
RecyclerView适配器
package dcbrh.ph.recyclerviewfirebasedatabase
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.card_view_layout.view.*
import java.util.*
class MainAdapter(val movie: Movie): RecyclerView.Adapter<CustomViewHolder>() {
val productTitles = listOf("The Bird Box","Extraction","Bad Boys","300 Spartans","Project X")
override fun getItemCount(): Int {
return movie.name.count()
}
override fun onCreateViewHolder(parent: ViewGroup,viewType: Int): CustomViewHolder {
val layoutInflater = LayoutInflater.from(parent.context)
val cellGrid = layoutInflater.inflate(R.layout.card_view_layout,parent,false)
return CustomViewHolder(cellGrid)
}
override fun onBindViewHolder(holder: CustomViewHolder,position: Int) {
// val productTitles = productTitles.get(position)
holder.sight.apply {
cardView_textView_title.text = movie.name
cardView_textView_price.text = movie.price
}
}
}
class CustomViewHolder(val sight: View): RecyclerView.ViewHolder(sight) {}
我的代码仅检索此孩子的name
及其大小
Child picture
看看这个应用程序,以了解我说代码检索名称size
的意思。
App picture
P.S。我知道它来自我的getItemCount
代码。我只是不知道如何解决我当前的问题,即获取数据库大小。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。