Search code examples
androidfirebaseandroid-recyclerviewkotlinfirebaseui

How can I use Firebase UI database with Kotlin


val adapter = FirebaseRecyclerAdapter<Discount, Holder>(
                Discount::class.java,
                R.layout.fragment_main_day_item,
                Holder::class.java,
                FirebaseDatabase.getInstance().getReference()
        ) {
            override fun populateViewHolder(holder: Holder, dis: Discount, pos: Int){

            }
        }

docs are here

How can I handle this using Kotlin

EDIT

val mAdapter = object : FirebaseRecyclerAdapter<Chat, ChatHolder>(
            Chat::class.java,
            R.layout.fragment_main_day_item,
            ChatHolder::class.java,
            ref) {
        public override fun populateViewHolder(holder: ChatHolder, chat: Chat, position: Int) {

        }
    }

I converted java to kotlin and it works.


Solution

  • After upgrading to FirebaseUI 3.0, Firebase Realtime Database can be used as follows with Kotlin

    val options = FirebaseRecyclerOptions.Builder<Chat>()
                .setQuery(chatQuery,Chat::class.java)
                .setLifecycleOwner(this)
                .build()
    
    val adapter = object : FirebaseRecyclerAdapter<Chat, ChatHolder>(options) {
            override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ChatHolder {
                return ChatHolder(LayoutInflater.from(parent.context)
                        .inflate(R.layout.row_chat, parent, false))
            }
    
           protected override fun onBindViewHolder(holder: ChatHolder, position: Int, model: Chat) {
                holder.bind(model)
           }
    
           override fun onDataChanged() {
                // If there are no chat messages, show a view that invites the user to add a message.
                mEmptyListMessage.setVisibility(if (itemCount == 0) View.VISIBLE else View.GONE)
           }
        }