Last active
July 27, 2020 15:07
-
-
Save devqmr/b4a629f5df72886ecf126325deaa913f to your computer and use it in GitHub Desktop.
Parcel FireStore GeoPoint
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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