Intent.putExtra列表

时间:2011-07-01 05:10:42

标签: android

  

可能重复:
  How to put a List in intent

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

// 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,但没有太多发生 请帮助。还帮助我如何在下一个活动中获取数据

4 个答案:

答案 0 :(得分:104)

假设您的列表是字符串列表,请将数据设为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");
    
  5. 希望有所帮助。

答案 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");