Activity传递JavaBean对象集合给Activity/Fragment

来源:互联网 发布:衣锦夜行的燕公子知乎 编辑:程序博客网 时间:2024/05/01 08:56

一、Activity之间传递JavaBean对象集合
1、Bundle+Intent
第一种方式:Bean对象实现Serializable接口,优点实现方式简单,缺点效率低。

public class TestJavaBean implements Serializable {    private String englishTitle;    private String contentTitle;    private String chineseTitle;    private String contentUrl;    private String picUrl;    private String creatTime;    private String readCount;    public String getContentUrl() {        return contentUrl;    }    public void setContentUrl(String contentUrl) {        this.contentUrl = contentUrl;    }    public String getEnglishTitle() {        return englishTitle;    }    public void setEnglishTitle(String englishTitle) {        this.englishTitle = englishTitle;    }    public String getContentTitle() {        return contentTitle;    }    public void setContentTitle(String contentTitle) {        this.contentTitle = contentTitle;    }    public String getChineseTitle() {        return chineseTitle;    }    public void setChineseTitle(String chineseTitle) {        this.chineseTitle = chineseTitle;    }    public String getCreatTime() {        return creatTime;    }    public void setCreatTime(String creatTime) {        this.creatTime = creatTime;    }    public String getPicUrl() {        return picUrl;    }    public void setPicUrl(String picUrl) {        this.picUrl = picUrl;    }    public String getReadCount() {        return readCount;    }    public void setReadCount(String readCount) {        this.readCount = readCount;    }}

可以看到只需要实现Serializable接口,不需要其他操作。

第二种方式:JavaBean对象实现Parcelable接口,优点效率更高,缺点就是相对Serializable接口来说实现稍微复杂。

public class SlideshowBean implements Parcelable{    private String englishTitle;    private String contentTitle;    private String chineseTitle;    private String contentUrl;    private String picUrl;    private String creatTime;    private String readCount;    public SlideshowBean(){        super();    }    public SlideshowBean(String englishTitle,String contentTitle,String chineseTitle,                         String contentUrl,String picUrl,String creatTime,String readCount){        super();        this.englishTitle = englishTitle;        this.contentTitle = contentTitle;        this.chineseTitle = chineseTitle;        this.contentUrl = contentUrl;        this.picUrl = picUrl;        this.creatTime = creatTime;        this.readCount = readCount;    }    public String getEnglishTitle() {        return englishTitle;    }    public void setEnglishTitle(String englishTitle) {        this.englishTitle = englishTitle;    }    public String getContentTitle() {        return contentTitle;    }    public void setContentTitle(String contentTitle) {        this.contentTitle = contentTitle;    }    public String getChineseTitle() {        return chineseTitle;    }    public void setChineseTitle(String chineseTitle) {        this.chineseTitle = chineseTitle;    }    public String getContentUrl() {        return contentUrl;    }    public void setContentUrl(String contentUrl) {        this.contentUrl = contentUrl;    }    public String getPicUrl() {        return picUrl;    }    public void setPicUrl(String picUrl) {        this.picUrl = picUrl;    }    public String getCreatTime() {        return creatTime;    }    public void setCreatTime(String creatTime) {        this.creatTime = creatTime;    }    public String getReadCount() {        return readCount;    }    public void setReadCount(String readCount) {        this.readCount = readCount;    }    @Override    public String toString() {        return "SlideshowBean{" +                "englishTitle='" + englishTitle + '\'' +                ", contentTitle='" + contentTitle + '\'' +                ", chineseTitle='" + chineseTitle + '\'' +                ", contentUrl='" + contentUrl + '\'' +                ", picUrl='" + picUrl + '\'' +                ", creatTime='" + creatTime + '\'' +                ", readCount='" + readCount + '\'' +                '}';    }    @Override    public int describeContents() {        return 0;    }//写入数据    @Override    public void writeToParcel(Parcel dest, int flags) {        dest.writeString(englishTitle);        dest.writeString(contentTitle);        dest.writeString(chineseTitle);        dest.writeString(contentUrl);        dest.writeString(picUrl);        dest.writeString(creatTime);        dest.writeString(readCount);    }//读取数据    public static final Parcelable.Creator<SlideshowBean> CREATOR = new Creator<SlideshowBean>() {        @Override        public SlideshowBean createFromParcel(Parcel source) {            SlideshowBean slideshowBean = new SlideshowBean();            slideshowBean.englishTitle = source.readString();            slideshowBean.contentTitle = source.readString();            slideshowBean.chineseTitle = source.readString();            slideshowBean.contentUrl = source.readString();            slideshowBean.picUrl = source.readString();            slideshowBean.creatTime = source.readString();            slideshowBean.readCount = source.readString();            return slideshowBean;        }        @Override        public SlideshowBean[] newArray(int size) {            return new SlideshowBean[size];        }    };}

注意:写入和读取的操作顺序要一致。

代码中传递:

//获取Bundle对象实例Bundle bundle = new Bundle();    //put集合数据        bundle.putParcelableArrayList("SlideshowBean", (ArrayList<? extends Parcelable>) slideshowBeenList);        //获取Intent对象实例Intent intent = new Intent();    //将bundle添加到Intent中        intent.putExtras(bundle);

获取数据比较简单,在Activity中获取传递的Intent对象将Bundle对象取出,调用相对应的方法取出Bundle中的数据就可以了,这里Bundle添加实现了Serializable和Parcelable的JavaBean对象集合的方法没多大区别,只是putParcelableArrayList变成了putSerializableArrayList。

二、Activity传递JavaBean集合对象到Fragment
1、Bundle方式,同样JavaBean也要实现序列化的接口,同上。
代码中传递:

//将数据传入Fragment        bbcSixminutesFragment = new BbcSixminutesFragment();        Bundle bundle = new Bundle();        bundle.putParcelableArrayList("SlideshowBean", (ArrayList<? extends Parcelable>) slideshowBeenList);        bbcSixminutesFragment.setArguments(bundle);

代码中获取:

//获取Bundle中的数据        Bundle bundle = getArguments();        slideshowBeenList = bundle.getParcelableArrayList("SlideshowBean");

同样这种方式还可以传递很多不同类型的数据,可以自行在方法当中去找。

阅读全文
0 0
原创粉丝点击