kotlin-parcelize
প্লাগইন একটি Parcelable
বাস্তবায়ন জেনারেটর প্রদান করে।
Parcelable
এর জন্য সমর্থন অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle
ফাইলে Gradle প্লাগইন যোগ করুন:
গ্রোভি
plugins { id 'kotlin-parcelize' }
কোটলিন
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
বিভিন্ন ধরনের সমর্থন করে:
- আদিম প্রকার (এবং তাদের বক্সযুক্ত সংস্করণ)
- বস্তু এবং enums
-
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 প্লাগইন নিয়ে কোনো সমস্যার সম্মুখীন হন, আপনি একটি বাগ ফাইল করতে পারেন।