2013-07-23 42 views
0

您好我正在開發一個Android應用程序,我需要使用可擴展列表。我在網上找到了一個很好的示例代碼來使用可擴展列表。所以我基於這個代碼來解決我的問題。 結果應該與我的iOS應用類似,你可以在這裏看到截圖:http://postimg.org/image/ej9t50f6t/。 我在這樣的情況: 我的地圖的鑰匙插入陣列中,數據被插入2個陣列,現在我應該有這種情況:創建一個Java適用於適配器的字符串的地圖

Map { 
key = Episodio 1  29 Giu 2013, value= [14:30, https://lh6.googleusercontent.com/-XSh-9ngYJu4/ThiY-xl2EeI/AAAAAAAABmc/iz04VpL5hOs/s800/realtime.png, Real Time] 

key = Episodio 1  29 Giu 2013, value= [16:30, http://tv.zam.it/canali/dmax.png, DMAX] 

key = Episodio 2  01 Lug 2013, value= [14:30, https://lh6.googleusercontent.com/-XSh-9ngYJu4/ThiY-xl2EeI/AAAAAAAABmc/iz04VpL5hOs/s800/realtime.png, Real Time] 

key = Episodio 2  01 Lug 2013, value= [16:30, http://tv.zam.it/canali/dmax.png, DMAX] 
} 

所以我寫了這個代碼:

String[] progrepvis1 = null; 
    String[] progrepvis2 = null; 
    for (int i = 0; i < epTime.length; i++) { 
     if (i % 2 == 0) { 
      String[] progrepvis1temp = {epTime[i], epChLogo[i], epCh[i]}; 
      progrepvis1 = progrepvis1temp; 
     } else { 
      String[] progrepvis2temp = {epTime[i], epChLogo[i], epCh[i]}; 
      progrepvis2 = progrepvis2temp; 
     } 
    } 
    episodeData = new LinkedHashMap<String, List<String>>(); 

    Log.d("GROUP", "" + groupList); 

    for (String episode : groupList) { 
     for (int i = 0; i < episodeNumberAndDate.length; i++) { 
      if (i % 2 == 0 && episode.equals(episodeNumberAndDate[i])) { 
       loadChild(progrepvis1); 
      } else { 
       loadChild(progrepvis2); 
      } 
     } 
     episodeData.put(episode, childList); 
    } 
    Log.d("LISTA", "" + episodeData); 

} 

private void loadChild(String[] episodeData) { 
    childList = new ArrayList<String>(); 
    for (String episode : episodeData) { 
     childList.add(episode); 
    } 
} 

但這個片段的結果是如下:

Map { 
key = Episodio 1  29 Giu 2013, value= [16:30, http://tv.zam.it/canali/dmax.png, DMAX] 

key = Episodio 2  01 Lug 2013, value= [16:30, http://tv.zam.it/canali/dmax.png, DMAX] 
} 

你可以看到,我只有程序的重複,但我已經不是第一次了,怎麼我可以解決這個問題?我希望你能幫助我 謝謝

回答

0

它看起來像你的問題在於你的鍵是相同的,在HashMap的情況下,將相同的鍵組合成單個鍵/值對(最後一次添加的值覆蓋以前添加的值)。

如果你希望能夠使用相同的密鑰多次嘗試這樣的事情:

HashMap<String, Vector<String>> keyValueList = new HashMap<String, Vector<String>>(); 

這是一個HashMapString爲重點,用Vector<String>作爲 。這個向量將允許您爲單個鍵擁有多個值。

String key = "Episodio 1  29 Giu 2013"; 
Vector<String> valueList = keyValueList.get(key); 
for (int i = 0; i < valueList.getSize(); i++) 
{ 
    String value = valueList.elementAt(i); 
    // ... do something with the value here 
} 
+0

我明白我的愚蠢問題,現在我將嘗試通過向我的密鑰添加標識符來解決問題 – lucgian84

0

從Java documentation

公共接口地圖

將鍵映射到值的對象。 A map CAN NOT包含重複的 鍵;每個鍵可以映射到最多一個值。

您試圖將不同的值映射到相同的密鑰,這是不可能的。

放(K鍵,V值)
將指定值與此映射(可選操作)指定的鍵。

因此,當您使用同一個鍵第二次調用episodeData.put(episode, childList);時,您將覆蓋第一次的值。

+0

我傻......我明白我的白癡錯誤...我會嘗試修復它可能添加一些東西到第一和到:

要從此列表讀出值第二個關鍵... – lucgian84

相關問題