我是靠谱客的博主 眼睛大荷花,最近开发中收集的这篇文章主要介绍Activity传递对象集合到Fragment,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

因为 android.support.v4.app.Fragment 的构造函数是默认的:

 public Fragment() {
    }

所以传递数据就比较麻烦啦,如果在该Fragment中有一个listview,但其中的数据(List)需要从MainActivity中传过来,要怎么做呢?

可以通过序列化来实现:

public class DataBean implements Parcelable {
    private String title;
    private String content;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(this.title);
        dest.writeString(this.content);
    }

    public DataBean() {
    }

    protected DataBean(Parcel in) {
        this.title = in.readString();
        this.content = in.readString();
    }

    public static final Parcelable.Creator<DataBean> CREATOR = new Parcelable.Creator<DataBean>() {
        @Override
        public DataBean createFromParcel(Parcel source) {
            return new DataBean(source);
        }

        @Override
        public DataBean[] newArray(int size) {
            return new DataBean[size];
        }
    };
}

Parcelable 是Android中的api,其效率要比 Java中的API Serializable效率高。在 Android studio中可以安装 Parcelable generator插件来实现序列化,高效简单。

 List<DataBean> dataBeanList = new ArrayList<>();
 OneFragment oneFragment = new OneFragment();
        Bundle bundle = new Bundle();
        bundle.putParcelableArrayList("ZJT", (ArrayList<? extends Parcelable>) dataBeanList);
        oneFragment.setArguments(bundle);

        mFragments.add(oneFragment);

然后在 Fragment的 onCreateView方法中通过 getArguments()来获取数据,代码如下:

 Bundle bundle = getArguments();
        if(bundle != null){
            dataBeanList = bundle.getParcelableArrayList("ZJT");
            listView = (ListView) v.findViewById(R.id.one_fragment_listview);
            listViewAdapter = new ListViewAdapter(getContext(), dataBeanList);
            listView.setAdapter(listViewAdapter);
        }

大致流程就是这样的。

最后

以上就是眼睛大荷花为你收集整理的Activity传递对象集合到Fragment的全部内容,希望文章能够帮你解决Activity传递对象集合到Fragment所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部