2014-12-06 29 views
0

我有這樣的代碼。這是源頭課的第一堂課。發送SimpleAdapter或ArrayList <Object>與意圖

List<HashMap<String, Object>> sonucList = new ArrayList<HashMap<String,Object>>(); 

HashMap<String, Object> searchHM = new HashMap<String, Object>(); 
searchHM.put("Name", eslenenName); 
searchHM.put("image", R.drawable.appicon); 
sonucList.add(searchHM); 

String[] from = { "Name","image"}; 
int[] to = { R.id.name,R.id.imageView1}; 

SimpleAdapter adapterSearch = new SimpleAdapter(getBaseContext(), sonucList, R.layout.list, from, to); 

代碼是這樣的。我創建了一個HashMap,在我的原始代碼中添加了更多的值。我使用for循環將這些hashmaps添加到ArrayList ,並使用此列表創建SimpleAdapter。

我所要做的就是將這個ArrayList或SimpleAdapter發送到一個新的類。我想在另一個頁面中使用此適配器創建一個相同的列表視圖。我試着用intent.putExtra(),但putExtra不接受它說的Object。

我該怎麼辦?謝謝。

+0

不確定,但不'intent.putExtra()'需要一個'Serializable'?在這種情況下,使'SimpleAdapter''實現Serializable'可能已經有所幫助。 – 2014-12-06 15:56:59

+0

如果我嘗試發送HashMap,Serializable可以幫助我。但是我有超過1個HashMap,所以發送HashMap不是解決方案。 – 2014-12-06 16:08:26

回答

0

編譯器知道HaspMapSerializable因爲你'通過其特定類型指Collection。但它不知道你的ListSerializable,因爲你通過它的特定類型來引用這個Collection。有三種可能性。

  1. 使用鑄造,使用intent.putExtra((Serializable) sonucList);
  2. 使用一個特定的類,宣稱它是這樣的:ArrayList<HashMap<String, Object>> sonucList = ...;
  3. 創建一個實現兩者ListSerializable,即<SerializableList extends List & Serializable>類型參數,並使用SerialiableList代替List

順便說一句,如果你處理與Android,你可能要替換ObjectSerializable在許多地方在你的代碼,以避免NotSerializableException在編譯的時候,而不是水平讓他們在運行時。

+0

非常感謝。第一種可能性工作。再次感謝你。你救了我。 – 2014-12-06 16:25:52

+0

所有這三種解決方案都可以使用。我應該補充說第一個解決方案是最糟糕的。從Java 1.5開始,Java代碼幾乎不應該包含強制轉換。儘管演員似乎是安全的,但如果可能的話,最好將'List'聲明爲'ArrayList' - 在這種情況下。 – 2014-12-06 16:32:48

0

,對於所有類

工作使用單來存儲你想傳遞

檢索目的地類存儲的對象的對象整蠱解決方法

+0

我從來沒有使用辛格爾頓,我不知道它是如何工作的,但我會嘗試它。謝謝。 – 2014-12-06 16:13:35

+0

不確定你是否真的想使用單身。 http://www.riedquat.de/prog/singletonsAreEvil – 2014-12-07 03:55:23

+0

形式化的方法:使用Serializable接口爲你想要傳遞的對象 – 2014-12-07 10:17:25

相關問題