2013-03-07 105 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); 
相關問題