Intent.putExtra列表

56 android

可能重复:
如何将List放入intent中

我想将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);  
}   
Run Code Online (Sandbox Code Playgroud)

但我无法以这种方式放置数据.我早些时候问了这个问题,但没有太多发生.
请帮助.还帮助我如何在下一个活动中获取数据.

Man*_*del 115

假设您的List是一个字符串列表,可以ArrayList<String>使用数据intent.putStringArrayListExtra("data", data)

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

  1. 声明清单

    private List<String> test;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 初始列表在适当的地方

    test = new ArrayList<String>();
    
    Run Code Online (Sandbox Code Playgroud)

    并根据需要添加数据test.

  3. 传递意图如下:

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

    ArrayList<String> test = getIntent().getStringArrayListExtra("test");
    
    Run Code Online (Sandbox Code Playgroud)

希望有所帮助.


Sun*_*hoo 19

如果您使用ArrayList而不是list,那么您的问题也将得到解决.在您的代码中只将List修改为ArrayList.

private List<Item> data;
Run Code Online (Sandbox Code Playgroud)

  • 稍后您可以通过`ArrayList <Item> items =(ArrayList <Item>)getArguments().getSerializable(EXTRA_ITEMS);`来读取列表. (3认同)

N-J*_*JOY 11

你可以用两种方式做到这一点

  • 序列化

  • Parcelable.

此测试将向您展示如何使用serializable实现它

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
}
Run Code Online (Sandbox Code Playgroud)

现在来看看 这个. 此链接将简要介绍如何使用Parcelable实现它.

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

谢谢.

  • 这实际上并没有回答如何将 LIST 放入意图中的问题。仅关于如何将单个特定项目放入意图中。 (2认同)