我正在嘗試創建字串串列的 RecyclerView。但我無法將資料放入recyclerView。我能夠創建字串 ArrayList。我已經檢查過了。
這是我的配接器代碼:-
class SearchPlaceAdapter(
private var mContext: Context,
private var mPlaces: List<String>,
private var isFragment: Boolean = false,
): RecyclerView.Adapter<SearchPlaceAdapter.ViewHolder>(){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view =
LayoutInflater.from(mContext).inflate(R.layout.rv_search_place, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.place.text = mPlaces[position]
}
override fun getItemCount(): Int {
return mPlaces.size
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
var place: TextView =itemView.findViewById(R.id.searchPlaceTV)
}
}
這是我的片段代碼:-
placesRecyclerview.setHasFixedSize(true)
placesRecyclerview.layoutManager = LinearLayoutManager(context)
placesList = ArrayList()
placesAdapter =
context?.let { SearchPlaceAdapter(it, placesList as ArrayList<String>, true) }
placesRecyclerview.adapter = placesAdapter
searchButton.setOnClickListener {
searchPlaces()
}
private fun searchPlaces() {
val placesRef = FirebaseDatabase.getInstance().reference.child("Places")
placesRef.addValueEventListener(object : ValueEventListener{
override fun onDataChange(datasnapshot: DataSnapshot) {
if (datasnapshot.exists()) {
(placesList as ArrayList<String>).clear()
for (snapshot in datasnapshot.children) {
(placesList as ArrayList<String>).add(snapshot.key!!)
}
}
}
override fun onCancelled(error: DatabaseError) {
Toast.makeText(context, "Error Occurred.", Toast.LENGTH_LONG).show()
}
})
}
這是 JSON 片段:-
"Places": {
"India": true
}
我不知道為什么我無法獲取資料。我已經嘗試了一切,但它不起作用。
uj5u.com熱心網友回復:
當您完成從實時資料庫中獲取資料時,實際上當您placesList已經包含查詢回傳的所有物件時,您還需要執行一項操作,即使用以下命令通知配接器有關更改:
for (snapshot in datasnapshot.children) {
(placesList as ArrayList<String>).add(snapshot.key!!)
}
placesAdapter.notifyDataSetChanged(); //Notify the adapter.
如您所見,最后一行代碼應在 for 回圈結束后立即添加。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/510130.html
標籤:Google Cloud Collective 安卓火力基地科特林firebase-实时数据库
