2013-03-07 52 views
1

我试图在活动之间通过一个ArrayList<HashMap<String, String>>。我如何与Intents做到这一点?如何在活动之间传递ArrayList <HashMap <String,String >>?

+1

数据由于所有这些的实现'Serianlizable',我想你可以通过'Intent.putExtra()'。 ([Source](http://developer.android.com/reference/android/content/Intent.html#putExtra%28java.lang.String,%20java.io.Serializable%29)) – 2013-03-07 00:16:53

回答

2

ArrayList是可序列化的(以及HashMaps和Strings),所以请尝试putExtra(String, Serializable)

ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>(); 
Intent intent = new Intent(this, MyActivity.class); 
intent.putExtra("key", list); 
+0

对不起,我没有理解。你的意思是putExtra(“list”,(Serializable)myList)? – 2013-03-07 00:15:00

+0

是的,如果你使用'List myList = new ArrayList ();'因为List是一个接口而实际的类不需要_必须实现Serializable,所以你需要将它转换为Serializable。 – Sam 2013-03-07 00:19:26

+0

嗯,我做了上述,我无法在我的其他活动中获取数据。我这样做:Intent intent = getIntent(); \t \t Bundle bundle = intent.getExtras(); \t \t ArrayList > list = bundle.get(“list”); – 2013-03-07 00:21:24

0

使用putExtra(String, Serializable)通过在IntentgetSerializableExtra(String)方法的值来检索数据。

传递从活动A一个ArrayList>到活动B

Intent intent = new Intent(this, B.class); 
HashMap<String, String> hm = new HashMap<String, String>(); 
hm.put("sunil", "sahoo"); 
ArrayList<HashMap<String, String>> arl = new ArrayList<HashMap<String, String>>(); 
arl.add(hm); 
intent.putExtra("arraylist", arl); 
startActivityForResult(intent, 500); 

检索活动B

ArrayList<HashMap<String, String>> arl = (ArrayList<HashMap<String, String>>) getIntent().getSerializableExtra("arraylist"); 
System.out.println("...serialized data.."+arl); 
相关问题