We are used to connecting firebases database using Java. But how can we take database with Kotlin? Event it is not listed in the Firebase document. I've been able to do this after many attempts. As Android adopts Kotllyn as a formal language, I expect it to be documented as soon as possible.
This app is English Radio Application made with Kotllyn. I will show you how this app receive Firebase database.
https://play.google.com/store/apps/details?id=com.english_radio
Everytime this app is synchronized with Firebase database for radio channel. Let's see Firebase database structure.
Let's take a closer look at this "c_data" node.
It has boolean, String, Array object.
And then we can take this like that.
Database Model is like that
IgnoreExtraProperty means that if it has object not included in the Firebase database, ignore this without error processing.
In Activity or using class :
This app is English Radio Application made with Kotllyn. I will show you how this app receive Firebase database.
https://play.google.com/store/apps/details?id=com.english_radio
Everytime this app is synchronized with Firebase database for radio channel. Let's see Firebase database structure.
Let's take a closer look at this "c_data" node.
It has boolean, String, Array object.
And then we can take this like that.
object FBReceiveHelper { val cDB: DatabaseReference by lazy { FirebaseDatabase.getInstance().getReference(KO_Attributes.C_DATA)} fun getChannelsData(onReceiveComplete: OnReceiveComplete){ cDB.addListenerForSingleValueEvent(object: ValueEventListener{ override fun onCancelled(error: DatabaseError?) { onReceiveComplete.onFailed() } override fun onDataChange(snapShot: DataSnapshot?) { snapShot?.let { onReceiveComplete.onSuccess(it)} } }) }
......
Database Model is like that
@IgnoreExtraProperties
data class ChannelArray(var app_server_on: Boolean = true, var app_version: String = "1.4.1", var channel_array: ArrayList<ChannelData> = arrayListOf<ChannelData>())
IgnoreExtraProperty means that if it has object not included in the Firebase database, ignore this without error processing.
In Activity or using class :
FBReceiveHelper.getChannelsData(object : FBReceiveHelper.OnReceiveComplete{ override fun onSuccess(dataSnapshot: DataSnapshot?) { println(dataSnapshot) val channelArray = dataSnapshot?.getValue(ChannelArray::class.java)
.....Get channel data (c_data) to ChannelArray class.
Comments
Post a Comment