我的问题是我有一个带有自定义对象的数组列表,需要从一个活动传递到另一个活动。
很明显,让我说:
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>>
我希望有人能提供帮助。
预先感谢
答案 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
。