如何在Android中使可拆分的数组列表的数组列表

时间:2019-02-19 12:29:11

标签: java android arraylist parcelable

我的问题是我有一个带有自定义对象的数组列表,需要从一个活动传递到另一个活动。

很明显,让我说:

ArrayList<ArrayList<Statement>> data;  

在一项活动中,我想将其传递给另一项活动。因此,我首先要做的是使 Statement (声明)实现 Parcelable 类。 然后,在第一个活动(发送者)中,我通过向其传递 data 来调用 putExtra()方法。 在第二个活动(接收方)中,我调用 getSerializableExtra()方法以获取数据

那行得通。但是我已经读过Parcelable可以提高效率等,因此我尝试在发送者活动中调用 putParcelableArrayListExtra(),并在接收者活动中调用 getParcelableArrayListExtra()方法。 但是当我这样做时,我得到红色的下划线表示某事。喜欢

  

ArrayList 是必需的

在第一个活动是发件人中,我有一行:

Intent intent = new Intent(SenderActivity.this, ReceiverActivity.class);

intent.putParcelableArrayListExtra(SenderActivity.EXTRA_LISTOFSTATEMENTLISTS, dataListOfStatementLists);

在接收者活动中,我有某事。喜欢:

myList = ( ArrayList<ArrayList<Statement>>) getIntent().getParcelableArrayListExtra(EXTRA_LISTOFSTATEMENTLISTS);

我需要解决什么?我知道有关如何将Parcelable对象从一个活动发送到另一个活动的基础知识。但这就是

ArrayList<ParcelableObject> data

我从未对像这样的嵌套数据做过

ArrayList<ArrayList<ParcelableObject>>

我希望有人能提供帮助。

预先感谢

3 个答案:

答案 0 :(得分:0)

尝试此发送数据

Intent intent = new Intent(SenderActivity.this, ReceiverActivity.class);
Bundle bundle = new Bundle();
bundle.putParcelable("object", List);
in.putExtra("list", bundle);
startActivity(in);

用于接收数据

Intent i=getIntent();
Bundle bundle= i.getBundleExtra("list");
ArrayList<Statement> list = bundle.getParcelable("object");

答案 1 :(得分:0)

这只是另一种方式。我想您知道如何在其他活动中获取这些值。

ArrayList<ArrayList<Statement>> data;
Bundle bundle = new Bundle();
bundle.putInt("size", data.size());
for (int i = 0; i < data.size(); i++) {
    bundle.putParcelableArrayList("item"+i, data.get(i));
}

答案 2 :(得分:0)

每次您想通过Intent将数据从一个活动传递到另一个活动时,都必须确保创建要发送的对象的类正在实现Serializable,否则,将无法正常工作。您的问题可能与此有关,因此我建议您在您的课程上实现Serializable