我想将列表从一个活动传递到另一个活动。到目前为止,我还没有成功。这是我的代码。
// desserts.java
private List<Item> data;
@Override
public void onCreate(Bundle icicle) {
//Code
data.add(new Item(10, "dessert1"));
data.add(new Item(11, "dessert2"));
data.add(new Item(12, "dessert3"));
data.add(new Item(13, "dessert4"));
data.add(new Item(14, "dessert5"));
data.add(new Item(15, "dessert6"));
data.add(new Item(16, "dessert7"));
data.add(new Item(17, "dessert8"));
data.add(new Item(18, "dessert9"));
data.add(new Item(19, "dessert10"));
data.add(new Item(20, "dessert11"));
//Some more code
}
@Override
public void onClick(View v) {
Intent view_order_intent = new Intent(this, thirdpage.class);
view_order_intent.putExtra("data", data);
startActivity(view_order_intent);
}
但是我无法以这种方式放置数据。我问了这个问题earlier,但没有太多发生 请帮助。还帮助我如何在下一个活动中获取数据。
答案 0 :(得分:104)
假设您的列表是字符串列表,请将数据设为ArrayList<String>
并使用intent.putStringArrayListExtra("data", data)
以下是您需要的代码框架:
声明列表
private List<String> test;
适当位置的初始列表
test = new ArrayList<String>();
并根据test
添加数据。
传递给意图如下:
Intent intent = getIntent();
intent.putStringArrayListExtra("test", (ArrayList<String>) test);
按如下方式检索数据:
ArrayList<String> test = getIntent().getStringArrayListExtra("test");
希望有所帮助。
答案 1 :(得分:16)
如果您使用ArrayList而不是list,那么您的问题也将得到解决。 在您的代码中,只将List修改为ArrayList。
private List<Item> data;
答案 2 :(得分:8)
您可以使用
以两种方式完成此操作序列化
Parcelable。
本例将向您展示如何使用可序列化
实现它class Customer implements Serializable
{
// properties, getter setters & constructor
}
// This is your custom object
Customer customer = new Customer(name, address, zip);
Intent intent = new Intent();
intent.setClass(SourceActivity.this, TargetActivity.this);
intent.putExtra("customer", customer);
startActivity(intent);
// Now in your TargetActivity
Bundle extras = getIntent().getExtras();
if (extras != null)
{
Customer customer = (Customer)extras.getSerializable("customer");
// do something with the customer
}
现在看看this.此链接将简要介绍如何使用Parcelable实现它。
看看this.。这个讨论会让你知道哪种方法更好实现它。
感谢。
答案 3 :(得分:0)
//To send from the activity that is calling another activity via myIntent
myIntent.putExtra("id","10");
startActivity(myIntent);
//To receive from another Activity
Bundle bundle = getIntent().getExtras();
String id=bundle.getString("id");