2015-11-25 41 views
0

我有以下格式數組列表中的數據:從HashMap中不能檢索值HashMap中的另一個內嵌內

ArrayList<HashMap<String, HashMap<String, String>>> data; 

我從JSON中檢索數據並在ArrayList中的arraylist.Sample值結合它們是:

11-25 11:55:19.968: I/System.out(16451): Arraylist-->[{0={personid=64, personname=Biki Poddar, personage=19, personimage=1448347571_u.png, dogimage=1448347571_dog.png, dogname=sog, dogage=12}}, {1={personid=48, personname=Aron, personage=23, personimage=1447653750_u.png, dogimage=1447757386_dog.jpg, dogname=doggy, dogage=12}}, {2={personid=46, personname=Aron, personage=23, personimage=1447653797_u.png, dogimage=1447477714_dog.jpg, dogname=doggy, dogage=12}}, {3={personid=24, personname=name, personage=22, personimage=30_u.jpg, dogimage=1447755229_dog.jpg, dogname=tommy123, dogage=0}}, {4={personid=45, personname=Aron, personage=23, personimage=1447653811_u.png, dogimage=1447318926_dog.jpg, dogname=doggy, dogage=12}}, {5={personid=44, personname=Aron, personage=23, personimage=1447653821_u.png, dogimage=1447318926_dog.jpg, dogname=doggy, dogage=12}}, {6={personid=43, personname=Aron, personage=23, personimage=1447653841_u.png, dogimage=1447318926_dog.jpg, dogname=doggy, dogage=12}}, {7={personid=40, personname=Aron, personage=23, personimage=1447653881_u.png, dogimage=1447318926_dog.jpg, dogname=doggy, dogage=12}}] 

現在我嘗試一個適配器內檢索ArrayList中值:

HashMap<String, HashMap<String, String>> resultp = new HashMap<String, HashMap<String, String>>(); 
resultp = data.get(position); 

,其中的數據是:

ArrayList<HashMap<String, HashMap<String, String>>> data; 

結果的resultp

11-25 11:55:20.128: I/System.out(16451): resultp--->{0={personid=64, personname=Biki Poddar, personage=19, personimage=1448347571_u.png, dogimage=1448347571_dog.png, dogname=sog, dogage=12}} 

現在我想resultp內取HashMap中的價值,我不能做that.I嘗試了好幾種方式,使用入口集以及創建一個新的散列圖等,但我沒有結果。請幫助。

+0

是這樣的東西不適合你嗎? - 'resultp.get(「0」)。get(「personid」)' –

+0

嘗試請等待 – kgandroid

+0

String personid = resultp.get(Integer.toString(position))。get(「personid」);它是工作。請你解釋它是如何工作的?請張貼這個答案,以便我可以接受它。非常感謝你。 – kgandroid

回答

0

這個for-each循環會擋住你的resultp

for (String key : resultp.keySet()) { /* This line will get you every key (0, 1,2 3...)*/ 
    HashMap<String, String> entry = resultp.get(key); /*This line will get you every entry for each key*/ 

    for (String secondKey : entry.keySet()) { /*This line will get you every key for your entry 0, 1, 2 etc */ 
     String content = entry.get(secondKey);/* Do what you want with the result */ 
    } 
} 
+0

嘗試.......... – kgandroid

+0

我可以做到避免循環?我正在使用一個適配器。 – kgandroid

+0

在你的初始文章中顯示如何準確地在你的適配器中使用這個條目 – Omerixe

0

您最初的數據結構是一個數組列表,因此你通過索引檢索成員每HashMap的條目。 (data.get(index))

由於列表中包含一個映射,上面的操作的結果是一個映射。

現在考慮resultp作爲只有一個類型爲String和值爲鍵的映射(本例中爲另一個映射)的映射。使用resultp.get(鍵)將返回類型的對象HashMap<String, String>

HashMap<String, String> innerMap = resultp.get(key); 

現在,這是最裏面的地圖,通常地圖操作將適用。

+0

Innermap爲null – kgandroid

+0

只有在外部映射中不存在用於檢索值的鍵時,innerMap纔會爲空。如果您使用外部映射的鍵集中的鍵(除非它爲空),innerMap不能爲空。 – shivdim

+0

是的,你是對的......這個工作正常......但我在adapter.so中使用它當我從arraylist中刪除元素(刪除一個元素後)適配器再次從0初始化...因此投擲NPE – kgandroid