kotlin-parcelize
प्लगिन
यह पक्का करता है कि
Parcelable
लागू करने पर लागू होने वाला जनरेटर.
अगर आपको Parcelable
के साथ काम करना है, तो Gradle प्लग इन जोड़ें
ऐप्लिकेशन की build.gradle
फ़ाइल:
ग्रूवी
plugins { id 'kotlin-parcelize' }
Kotlin
plugins { id("kotlin-parcelize") }
जब किसी क्लास के बारे में @Parcelize
के साथ एनोटेट किया जाता है, तो Parcelable
को लागू किया जाता है
अपने-आप जनरेट होता है, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:
import kotlinx.parcelize.Parcelize
@Parcelize
class User(val firstName: String, val lastName: String, val age: Int): Parcelable
@Parcelize
फ़ंक्शन के लिए, सीरियल वाली सभी प्रॉपर्टी को
मुख्य कंस्ट्रक्टर है. प्लग इन हर प्रॉपर्टी के लिए चेतावनी जारी करता है
जिसमें बैकिंग फ़ील्ड का एलान किया गया हो. साथ ही, आप ये काम नहीं कर सकते
@Parcelize
लागू करें, अगर कुछ मुख्य कंस्ट्रक्टर पैरामीटर
प्रॉपर्टी नहीं है.
अगर आपकी क्लास को क्रम से लगाने के लिए ज़्यादा बेहतर लॉजिक की ज़रूरत है, तो इसे कंपैनियन क्लास के अंदर लिखें:
@Parcelize
data class User(val firstName: String, val lastName: String, val age: Int) : Parcelable {
private companion object : Parceler<User> {
override fun User.write(parcel: Parcel, flags: Int) {
// Custom write implementation
}
override fun create(parcel: Parcel): User {
// Custom read implementation
}
}
}
काम करने वाली फ़ाइल के टाइप
@Parcelize
कई तरह के विकल्पों के साथ काम करता है:
- प्रिमिटिव टाइप (और उनके बॉक्स वाले वर्शन)
- ऑब्जेक्ट और ईनम
String
,CharSequence
Exception
Size
,SizeF
,Bundle
,IBinder
,IInterface
,FileDescriptor
SparseArray
,SparseIntArray
,SparseLongArray
,SparseBooleanArray
- सभी
Serializable
(Date
सहित) औरParcelable
लागू करने की प्रक्रिया - काम करने वाले सभी टाइप के कलेक्शन:
List
(ArrayList
पर मैप किया गया),Set
(LinkedHashSet
पर मैप किया गया),Map
(LinkedHashMap
पर मैप किया गया)- इसके अलावा, कुछ ठोस तरीके से इन्हें लागू किया जा सकता है:
ArrayList
,LinkedList
,SortedSet
,NavigableSet
,HashSet
,LinkedHashSet
,TreeSet
,SortedMap
,NavigableMap
,HashMap
,LinkedHashMap
,TreeMap
,ConcurrentHashMap
- इसके अलावा, कुछ ठोस तरीके से इन्हें लागू किया जा सकता है:
- इस्तेमाल किए जा सकने वाले सभी टाइप की कैटगरी
- इस्तेमाल किए जा सकने वाले सभी टाइप के शून्य वाले वर्शन
कस्टम Parceler
अगर आपका टाइप सीधे इस्तेमाल नहीं किया जा सकता, तो Parceler
लिखा जा सकता है
मैपिंग ऑब्जेक्ट.
class ExternalClass(val value: Int)
object ExternalClassParceler : Parceler<ExternalClass> {
override fun create(parcel: Parcel) = ExternalClass(parcel.readInt())
override fun ExternalClass.write(parcel: Parcel, flags: Int) {
parcel.writeInt(value)
}
}
@TypeParceler
या @WriteWith
का इस्तेमाल करके, बाहरी पार्सलर लागू किया जा सकता है
एनोटेशन:
// Class-local parceler
@Parcelize
@TypeParceler<ExternalClass, ExternalClassParceler>()
class MyClass(val external: ExternalClass) : Parcelable
// Property-local parceler
@Parcelize
class MyClass(@TypeParceler<ExternalClass, ExternalClassParceler>() val external: ExternalClass) : Parcelable
// Type-local parceler
@Parcelize
class MyClass(val external: @WriteWith<ExternalClassParceler>() ExternalClass) : Parcelable
सुझाव
अगर आपको kotlin-parcelize
Gradle प्लग इन में कोई समस्या आती है, तो ये काम किए जा सकते हैं
गड़बड़ी की शिकायत करें.