آموزش Parcelable در اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش Parcelable در اندروید می پردازیم هدف اصلی از Parcelable افزایش سرعت در انتقال و هیمنطور یک Data Structure بسیار عالی است در ادامه با ما همراه باشید تا نحوه ساخت یک Parcelable سفارشی برای پاس داده داده های حجیم و عظیم بین اکتیویتی ها فرگمنت ها و سرویس را یاد گیرید با ما همراه باشید تا نحوه پیاده سازی و استفاده از Parcelable را یاد گیرید.
اگر به یاد داشته باشید می توان چهار نوع داده ای را توسط Bundle یا Intent منتقل کنید که عبارتند از :
- String
- primitives
- Serializable
- Parcelable
ابتدا باید یک کلاس درست کنید ما نام آن را برابر با Student قرار میدهیم سپس کدهای زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | package ir.programchi.autovalueparceable; import android.os.Parcel; import android.os.Parcelable; public class Student implements Parcelable { public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public Student createFromParcel(Parcel in) { return new Student(in); } public Student[] newArray(int size) { return new Student[size]; } }; private long id; private String name; private String grade; // Constructor public Student(long id, String name, String grade){ this.id = id; this.name = name; this.grade = grade; } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGrade() { return grade; } public void setGrade(String grade) { this.grade = grade; } public Student(Parcel in){ this.id = in.readLong(); this.name = in.readString(); this.grade = in.readString(); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeLong(this.id); dest.writeString(this.name); dest.writeString(this.grade); } @Override public String toString() { return "Student{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", grade='" + grade + '\'' + '}'; } } |
در بالا یک getter و setter همراه با یک Constructor داریم که با پاس دادن مقدار ها به آن به صورت یک Parcelable تبدیل می شود از متد writeToParcel برای نوشتن بروی یک Parcelable استفاده می شود یک متد نوشتیم که کل داده مربوط به کلاس Student را به صورت خاص بر می گرداند. در ادامه یک نوع مثال ساده استفاده از آن را برای شما قرار میدهیم.
برای اینکه آن را بین اکتیویتی جا به جا کنید مثل زیر عمل کنید.
1 | intent.putExtra("student", new Student("1","Mike","6")); |
و برای گرفتن این مقدار در اکتیویتی یا service باید مثل زیر عمل کنید.
1 2 | Bundle data = getIntent().getExtras(); Student student = (Student) data.getParcelable("student"); |
از طریق متد های get مربوط به student به داده ها دسترسی خواهید داشت.
این آموزش هم به پایان رسید.
موفق و پیروز باشید.
ممنونم
سلام …
میشه لطفا اموزش بدین که اگه فیلدی از جنس کلاسی که خودمون ساختیم داخل مثلا کلاس student داشته باشیم چجوری باید داده ها رو انتقال بدیم؟