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

一、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
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值