2 years ago

#48740

test-img

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

Accepted video resources