Skip to content

Instantly share code, notes, and snippets.

@devqmr
Last active July 27, 2020 15:07
Show Gist options
  • Save devqmr/b4a629f5df72886ecf126325deaa913f to your computer and use it in GitHub Desktop.
Save devqmr/b4a629f5df72886ecf126325deaa913f to your computer and use it in GitHub Desktop.
Parcel FireStore GeoPoint
package android.example.com.firestore
import android.content.Intent
import android.os.Bundle
import android.os.Parcel
import android.os.Parcelable
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.google.firebase.firestore.FirebaseFirestore
import com.google.firebase.firestore.GeoPoint
import com.google.firebase.firestore.ktx.firestore
import com.google.firebase.ktx.Firebase
import kotlinx.android.parcel.Parceler
import kotlinx.android.parcel.Parcelize
import kotlinx.android.parcel.RawValue
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
lateinit var db: FirebaseFirestore
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
db = Firebase.firestore
button.setOnClickListener { doIt() }
}
private fun doIt() {
Toast.makeText(this, "Hi", Toast.LENGTH_LONG).show()
val user = User("Ahmed", "Qamar", 3000, GeoPoint(3.3, 4.4))
val intent = Intent(this, MainActivity2::class.java)
intent.putExtra("user_data", user)
startActivity(intent)
}
}
@Parcelize
data class User(
var first: String,
var last: String,
var born: Int
, var location: @RawValue GeoPoint
) : Parcelable {
constructor(parcel: Parcel) : this(
parcel.readString() ?: "",
parcel.readString() ?: "",
parcel.readInt(),
GeoPoint(0.0, 0.0)
)
companion object : Parceler<User> {
override fun User.write(parcel: Parcel, flags: Int) {
parcel.writeString(first)
parcel.writeString(last)
parcel.writeInt(born)
parcel.writeDouble(location.latitude)
parcel.writeDouble(location.longitude)
}
override fun create(parcel: Parcel): User {
return User(
parcel.readString() ?: "",
parcel.readString() ?: "",
parcel.readInt(),
GeoPoint(parcel.readDouble(), parcel.readDouble())
)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment