android 用Parcelable传递复杂数据类型

来源:互联网 发布:网络电视有蓝牙吗 编辑:程序博客网 时间:2024/05/16 16:04
from : http://blog.sina.com.cn/s/blog_5033827f0101jmmi.html

传递class类型:
write的时候:
objBean.setBitmap((Bitmap) in.readParcelable(Bitmap.class.getClassLoader()));

read的时候:
 in.writeParcelable(objBean.getBitmap(), PARCELABLE_WRITE_RETURN_VALUE);

引用原文:



android 用Parcelable传递复杂数据类型
activity_main.xml外部引用 原始文档
 1 2 3 4 5 6 7 8 9101112131415161718
//主界面布局只有一个button,用来跳转到另外一个activity xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    
another.xml外部引用 原始文档
 1 2 3 4 5 6 7 8 91011121314151617181920212223
//接收复杂数据类型的activity的布局文件,这里主要是接收一个Bitmap对象 xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent" >             android:id="@+id/imgview"        android:layout_width="100dp"        android:layout_height="100dp"        android:contentDescription="@string/hello_world"        android:paddingLeft="10dp"        android:paddingRight="10dp" />             android:id="@+id/txtview"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@+id/imgview"        android:paddingBottom="10dp"        android:textColor="#CC0033"        android:textSize="16dp" />
ObjBean.java外部引用 原始文档
 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435363738
//创建一个bean类package com.example.passobjdemo;import android.graphics.Bitmap;public class ObjBean {                private int id;        private String name;        private double price;        private Bitmap bitmap;                public int getId() {                return id;        }        public void setId(int id) {                this.id = id;        }        public String getName() {                return name;        }        public void setName(String name) {                this.name = name;        }        public double getPrice() {                return price;        }        public void setPrice(double price) {                this.price = price;        }        public Bitmap getBitmap() {                return bitmap;        }        public void setBitmap(Bitmap bitmap) {                this.bitmap = bitmap;        }        public String toString() {                return "id=" + id + ", name=" + name + ", price=" + price;        }}
ParcelableUtil.java外部引用 原始文档
 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
package com.example.passobjdemo;import android.graphics.Bitmap;import android.os.Parcel;import android.os.Parcelable;public class ParcelableUtil implements Parcelable {                private ObjBean objBean;                public ObjBean getObjBean() {                return objBean;        }                public ParcelableUtil(ObjBean objBean) {                super();                this.objBean = objBean;        }                private ParcelableUtil(Parcel in) {                objBean = new ObjBean();                objBean.setId(in.readInt());                objBean.setName(in.readString());                objBean.setPrice(in.readDouble());                objBean.setBitmap((Bitmap) in.readParcelable(Bitmap.class.getClassLoader()));        }        @Override        public int describeContents() {                return 0;        }                @Override        public void writeToParcel(Parcel in, int flags) {                in.writeInt(objBean.getId());                in.writeString(objBean.getName());                in.writeDouble(objBean.getPrice());                in.writeParcelable(objBean.getBitmap(), PARCELABLE_WRITE_RETURN_VALUE);        }                public static final Parcelable.Creator<</span>ParcelableUtil> CREATOR =                         new Parcelable.Creator<</span>ParcelableUtil>() {                                @Override                                public ParcelableUtil createFromParcel(Parcel source) {                                        return new ParcelableUtil(source);                                }                                @Override                                public ParcelableUtil[] newArray(int size) {                                        return new ParcelableUtil[size];                                }                        };}
MainActivity.java外部引用 原始文档
 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435363738394041424344454647
package com.example.passobjdemo;import java.io.InputStream;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity implements OnClickListener{                private Button sendobj;        @Override        protected void onCreate(Bundle savedInstanceState) {                super.onCreate(savedInstanceState);                setContentView(R.layout.activity_main);                                sendobj = (Button) findViewById(R.id.sendobj);                sendobj.setOnClickListener(this);        }        @Override        public void onClick(View v) {                if (v.getId() == R.id.sendobj) {                        ObjBean bean = new ObjBean();                        bean.setId(1);                        bean.setName("Android smart Phone");                        bean.setPrice(999.99);                                                InputStream is = getResources().openRawResource(R.raw.amz);                        Bitmap bit = BitmapFactory.decodeStream(is);                        bean.setBitmap(bit);                                                ParcelableUtil pUtil = new ParcelableUtil(bean);                                                Intent intent = new Intent(MainActivity.this, AnotherActivity.class);                        intent.putExtra("objbean", pUtil);//将ParcelableUtil对象put到intent中                        startActivity(intent);                }        }}
AnotherActivity.java外部引用 原始文档
 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233
package com.example.passobjdemo;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.widget.ImageView;import android.widget.TextView;public class AnotherActivity extends Activity {                private ImageView imgView;        private TextView txtView;        @Override        protected void onCreate(Bundle savedInstanceState) {                super.onCreate(savedInstanceState);                setContentView(R.layout.another);                imgView = (ImageView) findViewById(R.id.imgview);                txtView = (TextView) findViewById(R.id.txtview);                                Intent intent = getIntent();                //获取从mainactivity传过来的ParcelableUtil对象                ParcelableUtil pu = (ParcelableUtil) intent.getParcelableExtra("objbean");                ObjBean bean = pu.getObjBean();                                //显示值                imgView.setImageBitmap(bean.getBitmap());                txtView.setText(bean.getName() + "\n" + bean.getPrice());                        }}
360手机助手截图1210_15_33_01.png外部引用 原始文档
android <wbr>用Parcelable传递复杂数据类型
360手机助手截图1210_15_33_02.png外部引用 原始文档
android <wbr>用Parcelable传递复杂数据类型
0 0