Android 将parcelable添加到自定义对象的接口类

Android 将parcelable添加到自定义对象的接口类,android,object,android-intent,android-activity,parcelable,Android,Object,Android Intent,Android Activity,Parcelable,我有一个自定义的对象类,但它是通过一个接口实现的,我怎样才能将parceable合并到其中呢。 我已经跟踪并搜索了Parcelable,但它只针对对象类。 例如: 我想将我的对象列表传递给android中的另一个活动 代码: public interface Projection { interface Job { @XBRead("./task") List<Task> getTasks(); @XBRead("./id")

我有一个自定义的对象类,但它是通过一个接口实现的,我怎样才能将parceable合并到其中呢。 我已经跟踪并搜索了Parcelable,但它只针对对象类。 例如:

我想将我的对象列表传递给android中的另一个活动

代码:

public interface Projection {

  interface Job {
        @XBRead("./task")
        List<Task> getTasks();

        @XBRead("./id")
        String getid();

        @XBRead("./job_title")
        String getjob_title();

        @XBRead("./job_description")
        String getjob_description();

        @XBRead("./job_room")
        String getjob_room();

        @XBRead("./status")
        String getstatus();
    }

    interface Task {

        @XBRead("./task_id")
        String gettask_id();

        @XBRead("./task_title")
        String gettask_title();

        @XBRead("./task_description")
        String gettask_description();

        @XBRead("./task_status")
        String gettask_status();


    }

    @XBRead("/root/job")
    List<Job> getJobs();
}
公共接口投影{
接口作业{
@XBRead(“/任务”)
List gettask();
@XBRead(“./id”)
字符串getid();
@XBRead(“/职位名称”)
字符串getjob_title();
@XBRead(“/工作描述”)
字符串getjob_description();
@XBRead(“/工作间”)
字符串getjob_room();
@XBRead(“/状态”)
字符串getstatus();
}
接口任务{
@XBRead(“/任务id”)
字符串gettask_id();
@XBRead(“/任务\标题”)
字符串gettask_title();
@XBRead(“/任务描述”)
字符串gettask_description();
@XBRead(“/任务状态”)
字符串gettask_status();
}
@XBRead(“/root/job”)
列出getJobs();
}

您的自定义界面需要
扩展Parcelable

实现自定义接口的类还需要实现
Parcelable
接口,包括
CREATOR

然后,您可以将实现自定义接口的对象添加到
意图中,如下所示:

intent.putExtra("thing", thing);
ArrayList<Thing> things;
intent.putParcelableArrayListExtra("things", things);
Thing thing = intent.getParcelableExtra("thing");
或者添加包含以下对象的
ArrayList

intent.putExtra("thing", thing);
ArrayList<Thing> things;
intent.putParcelableArrayListExtra("things", things);
Thing thing = intent.getParcelableExtra("thing");

arraylistthings=intent.getParcelableArrayListExtra(“things”);
完整的代码看起来像

MyInterface

public interface MyInterface extends Parcelable {

}
我的实施1

public class MyImplementation1 implements MyInterface, Parcelable {
    public final int var1;

    public MyImplementation1() {
        this.var1 = 1;
    }

    protected MyImplementation1(Parcel in) {
        var1 = in.readInt();
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(var1);
    }

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

    public static final Creator<MyImplementation1> CREATOR = new Creator<MyImplementation1>() {
        @Override
        public MyImplementation1 createFromParcel(Parcel in) {
            return new MyImplementation1(in);
        }

        @Override
        public MyImplementation1[] newArray(int size) {
            return new MyImplementation1[size];
        }
    };
}
public class MainActivity1 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_1);

        List<MyInterface> list = new ArrayList<>(2);
        list.add(new MyImplementation2(21));
        list.add(new MyImplementation2(22));

        MyClass myClass = new MyClass(new MyImplementation1(), list);

        Intent intent = new Intent(this, MainActivity2.class);
        Bundle b = new Bundle();
        b.putParcelable("key", myClass);
        intent.putExtras(b);
        startActivity(intent);
    }
}
public class MainActivity2 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_2);

        Bundle b = getIntent().getExtras();
        MyClass myClass = b.getParcelable("key");

    }
}