如何将自定义对象传递到其他片段中的列表?

时间:2019-02-19 10:25:56

标签: java android

因此,我有一个MainActivity的{​​{1}},其中有3个不同的标签,当我单击它们时,它们会将我重定向到3个不同的片段。

BottomNavigationView中,我有一个带有项目的FragmentA,每个项目都有一个按钮。 单击该按钮时,我想将该对象发送到RecyclerView,以便可以将其添加到FragmentB并更新ArrayList<CustomObject>中的RecyclerView以显示该项目。 / p>

唯一的问题是我不知道如何通过单击按钮来发送该对象。

FragmentB

1 个答案:

答案 0 :(得分:2)

首先在您的Model(Object)类中实现 Parcelable ,然后从Fragment A中调用它-

Fragment fragmentA = new FragmentGet();
Bundle bundle = new Bundle();
bundle.putParcelable("CustomObject", customObject);
fragmentA .setArguments(bundle);

此外,在片段B中,您也需要获取参数-

Bundle bundle = getActivity().getArguments();
if (bundle != null) {
    model = bundle.getParcelable("CustomObject");
}

您的自定义对象类将如下所示-

public class CustomObject implements Parcelable {

    private String name;
    private String description;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

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

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

    public CustomObject() {
    }

    protected CustomObject(Parcel in) {
        this.name = in.readString();
        this.description = in.readString();
    }

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

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

只需从您的回收站视图项目单击侦听器中调用Fragment B,然后使用上述代码使用Parcelable传递自定义对象即可。

希望有帮助。