2 years ago
#48740
Josh Conner
Kotlin adding onStart and onStop using Firebase Realtime Database
Beginner in Kotlin. I am trying to get firebase data into recyclerView. But at onStart and onStop part there is problem with rentalAdapter, it says "unresolved reference:rentalAdapter". I added 1 item in the database just to see if it works but when I execute the app it shows completely empty recyclerView. Any idea what could be the problem? Thanks in advance, it is greatly appreciated.
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstancestate: Bundle?) {
super.onCreate(savedInstancestate)
setContentView(R.layout.activity_main)
val query: Query = FirebaseDatabase.getInstance()
.reference
.child("rentals")
.limitToLast(50)
val options: FirebaseRecyclerOptions<RentalData> =
FirebaseRecyclerOptions.Builder<RentalData>()
.setQuery(query, RentalData::class.java)
.build()
val adapter: FirebaseRecyclerAdapter<*, *> = object : FirebaseRecyclerAdapter<RentalData, RentalAdapter.RentalViewHolder?>(options){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RentalAdapter.RentalViewHolder {
val layout = LayoutInflater.from(parent.context).inflate(R.layout.rental_item, parent, false)
return RentalAdapter.RentalViewHolder(layout)
}
override fun onBindViewHolder(holder: RentalAdapter.RentalViewHolder, position: Int, model: RentalData) {
}
}
val rentalAdapter: RentalAdapter = RentalAdapter(options)
val recView: RecyclerView = findViewById(R.id.rv)
recView.layoutManager = LinearLayoutManager(this)
recView.adapter = rentalAdapter
}
override fun onStart() {
super.onStart()
rentalAdapter.startListening()
}
override fun onStop() {
super.onStop()
rentalAdapter.stopListening()
}
}
RentalAdapter.kt
class RentalAdapter(options: FirebaseRecyclerOptions<RentalData>) :
FirebaseRecyclerAdapter<RentalData, RentalAdapter.RentalViewHolder>(options) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RentalViewHolder {
val layout = LayoutInflater.from(parent.context).inflate(R.layout.rental_item, parent, false)
return RentalViewHolder(layout)
}
override fun onBindViewHolder(holder: RentalViewHolder, position: Int, model: RentalData) {
holder.item_name.text = model.itemName
holder.item_brand.text = model.itemBrand
holder.item_price.text = model.itemPrice
holder.item_desc.text = model.itemDesc
Glide.with(holder.item_image.context)
.load(model.itemImageUrl)
.into(holder.item_image)
}
class RentalViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {
val item_name: TextView = itemView.findViewById(R.id.item_name_text)
val item_brand: TextView = itemView.findViewById(R.id.item_brand_text)
val item_price: TextView = itemView.findViewById(R.id.item_price_text)
val item_desc: TextView = itemView.findViewById(R.id.item_desc_text)
val item_image: ImageView = itemView.findViewById(R.id.image1)
}
}
android
kotlin
firebase-realtime-database
firebaseui
0 Answers
Your Answer