পারসেলেবল বাস্তবায়ন জেনারেটর

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 প্লাগইন নিয়ে কোনো সমস্যার সম্মুখীন হন, আপনি একটি বাগ ফাইল করতে পারেন।