您好我正在开发一个Android应用程序,我需要使用可扩展列表。我在网上找到了一个很好的示例代码来使用可扩展列表。所以我基于这段代码来解决我的问题。 结果应与我的iOS应用程序类似,您可以在此处看到屏幕截图:http://postimg.org/image/ej9t50f6t/。 我遇到这种情况: 我的Map的键插入一个数组,数据插入2个数组,现在我应该有这种情况:
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 :(得分:0)
来自Java documentation:
公共界面地图
将键映射到值的对象。地图 无法 包含重复内容 键;每个键最多可以映射一个值。
您尝试将不同的值映射到同一个键,但这是不可能的。
put(K键,V值)
将指定的值与此映射中的指定键相关联(可选操作)。
因此,当您使用相同的密钥第二次呼叫episodeData.put(episode, childList);
时,您将从第一次覆盖该值。
答案 1 :(得分:0)
看起来你的问题在于你的密钥是相同的,在HashMap的情况下,它会将相同的密钥分组为一个密钥/值对(最后添加的值会覆盖以前添加的值)。 / p>
如果您希望能够多次使用相同的密钥,请尝试以下方法:
HashMap<String, Vector<String>> keyValueList = new HashMap<String, Vector<String>>();
这是HashMap
,其中String
为关键字,并使用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
}