Intent.putExtra List

可能重复:
如何把意图放在一个列表

我想将一个List从一个活动传递给另一个。 到目前为止,我还没有成功。 这是我的代码。

//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); } 

但是我不能这样写数据 。 我之前问过这个问题,但没有太多的事情发生
请帮助。 还帮助我如何获得下一个活动的数据

Solutions Collecting From Web of "Intent.putExtra List"

假设您的List是一个string列表,使数据成为一个ArrayList<String>并使用intent.putStringArrayListExtra("data", data)

这是您需要的代码的骨架:

  1. 声明列表

     private List<String> test; 
  2. 初始列表在适当的地方

     test = new ArrayList<String>(); 

    并根据需要添加数据进行test

  3. 传递意图如下:

     Intent intent = getIntent(); intent.putStringArrayListExtra("test", (ArrayList<String>) test); 
  4. 检索数据如下:

     ArrayList<String> test = getIntent().getStringArrayListExtra("test"); 

希望有所帮助。

如果你使用ArrayList而不是列表,那么你的问题也将被解决。 在你的代码中只修改List到ArrayList。

 private List<Item> data; 

你可以用两种方法来做

  • 序列化

  • 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 } 

现在看看这个。 这个链接将给你一个简单的概述如何使用Parcelable实现它。

看这个 。 这个讨论会让你知道哪个更好的实现方法。

谢谢。

  //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");