【发布时间】:2020-07-06 12:22:15
【问题描述】:
所以我只需要在屏幕上显示我的 Firebase 数据库中的三个对象。如何实施? 我使用这个逻辑和适配器来检索我的数据。
retrieveData()
setData(recyclerView)
private fun setData(rec_view:RecyclerView) {
val query = FirebaseDatabase.getInstance().reference.child("News")
val options = FirebaseRecyclerOptions.Builder<News>()
.setQuery(query, News::class.java)
.build()
adapter = object:FirebaseRecyclerAdapter<News, NewsViewHolder>(options){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): NewsViewHolder {
Log.d("onCreateViewHolder_n", "onCreateViewHolder")
val newsView = LayoutInflater
.from(parent.context)
.inflate(R.layout.new_card_new, parent, false)
return NewsViewHolder(newsView)
}
override fun onBindViewHolder(holder: NewsViewHolder, position: Int, model: News) {
holder.setIsRecyclable(false)
holder.title.text = model.text
holder.timestamp.text = model.timestamp
holder.setNewsClickListener(object: NNewsClickListener {
override fun onClick(view: View, position: Int) {
startActivity(Intent(Intent.ACTION_VIEW).setData(Uri.parse(model.link)));
}
})
}
}
rec_view.adapter = adapter
}
private fun retrieveData() {
items.clear()
val db = FirebaseDatabase.getInstance()
.reference
.child("News")
db.addListenerForSingleValueEvent(object :ValueEventListener{
override fun onCancelled(error: DatabaseError) {
Log.d("ERROR", "" + error.message)
}
override fun onDataChange(snapshot: DataSnapshot) {
for(item_newsSnapShot in snapshot.children)
{
val item_news = item_newsSnapShot.getValue(News::class.java)
items.add(item_news!!)
}
}
})
}
我在某处发现我应该使用getItemCount() 或类似的东西,但我不确定。如果您对我的问题有任何疑问,请随时提出。
【问题讨论】:
-
请不要仅仅因为您使用 android-studio 标签而标记问题:Android Studio 标签应该仅在您对 IDE 本身有疑问时使用,而不是您在其中编写(或想要编写)的任何代码。请参阅 when is it appropriate to remove an IDE tag、How do I avoid misusing tags? 和 the tagging guide。请改用 [android] 或其他相关标签。
-
好的,很高兴知道
标签: android kotlin firebase-realtime-database android-recyclerview android-adapter