Parcelable 应用举例

来源:互联网 发布:对于java的理解 编辑:程序博客网 时间:2024/05/17 18:18
首先,自定义对象必须实现Parcelable,并且创建static final Parcelable.Creator<Contact> CREATOR对象(实现createFromParcel和newArray方法)
自定义对象为:
public static class Contact implements Parcelable {
        String number;
        String displayname;

        public Contact() {
          
        }

        public Contact(String number, String displayname) {
            this.number = number;
            this.displayname = displayname;
        }

        public String getNumber() {
            return number;
        }

        public void setNumber(String number) {
            this.number = number;
        }

        public String getDisplayname() {
            return displayname;
        }

        public void setDisplayname(String displayname) {
            this.displayname = displayname;
        }

        public static final Parcelable.Creator<Contact> CREATOR = new Creator<Contact>() {

          
            public Contact createFromParcel(Parcel source) {
                Log.i("dd","createFromParcel:"+source);
                // TODO Auto-generated method stub
                Contact contact = new Contact();
                contact.displayname = source.readString();
                contact.number = source.readString();

                return contact;
            }

            public Contact[] newArray(int size) {
                // TODO Auto-generated method stub
                return new Contact[size];
            }

        };

        public int describeContents() {
            // TODO Auto-generated method stub
            return 0;
        }

        public void writeToParcel(Parcel dest, int flags) {
            dest.writeString(displayname);
            dest.writeString(number);

        }

    }

其次在intent中放入这个list对象:
ArrayList<Contact> listContacts = new ArrayList<Contact>();
listContacts.add(new Contacts("name1","number1"));
intent.putParcelableArrayListExtra("listContacts", listContacts);

最后在activity中接受对象:
List<Contact> listContacts=new ArrayList<Contact>();
                listContacts=data.getParcelableArrayListExtra("listContacts");
                for(Contact contact:listContacts){
                    //在这处理传过来的对象数据
                }