[英]Hashmap not populating
我正在嘗試填充Hashmap
,如下所示:
public static final String KEY_PROPNAME = "";
public static final String KEY_KEYWORDS = "";
public static final String KEY_THUMB_URI = "";
ArrayList<HashMap<String, String>> clipsList = new ArrayList<HashMap<String, String>>();
for (int i = 0; i < clipDetailsArr.length; i = i
+ constants.noOfColumns) {
HashMap<String, String> map = new HashMap<String, String>();
map.put(KEY_PROPNAME, clipDetailsArr[i]);
map.put(KEY_PROPTYPE, clipDetailsArr[i + 1]);
map.put(KEY_PRICE, clipDetailsArr[i + 2]);
map.put(KEY_LOCATION, clipDetailsArr[i + 3]);
map.put(KEY_SQFT, clipDetailsArr[i + 4]);
map.put(KEY_SQFTTYPE, clipDetailsArr[i + 5]);
map.put(KEY_BED, clipDetailsArr[i + 6]);
map.put(KEY_BATH, clipDetailsArr[i + 7]);
map.put(KEY_KEYWORDS, clipDetailsArr[i + 8]);
map.put(KEY_THUMB_URI, clipDetailsArr[i + 9]);
Log.i("Main", "Clip clipDetailsArr[]: 0=" + clipDetailsArr[i] + " ,1=" + clipDetailsArr[i + 1]
+ " ,2=" + clipDetailsArr[i + 2] + " ,3=" + clipDetailsArr[i + 3] + " ,4="
+ clipDetailsArr[i + 4] + " ,5=" + clipDetailsArr[i + 5] + " ,6="
+ clipDetailsArr[i + 6] + " ,7=" + clipDetailsArr[i + 7] + " ,8="
+ clipDetailsArr[i + 8] + " ,9=" + clipDetailsArr[i + 9]);
Log.i("Main", "Clip PROPNAME=" + MainActivity.KEY_PROPNAME
+ " ,KEYWORDS" + MainActivity.KEY_KEYWORDS + " ,URI="
+ MainActivity.KEY_THUMB_URI);
Log.i("Main", "Clip get PROPNAME=" + map.get(KEY_PROPNAME)
+ " ,KEYWORDS" + map.get(KEY_KEYWORDS) + " ,URI="
+ map.get(KEY_THUMB_URI));
clipsList.add(map);
}
日志的輸出是這樣的:
Clip clipDetailsArr[]: 0=Opt out ,1=Residentail ,2=10000 ,3=Andheri ,4=500 ,5=Carpet ,6=2 ,7=1 ,8=optout ,9=/mnt/sdcard/Clipping/optout.png
Clip PROPNAME= ,KEYWORDS ,URI=
Clip get PROPNAME=/mnt/sdcard/Clipping/optout.png,
KEYWORDS/mnt/sdcard/Clipping/optout.png,
URI=/mnt/sdcard/Clipping/optout.png//AND SO ON
參考上面的日志,我在數組中有值,並通過使用map.put(key,value)
將它們放入數組中map.put(key,value)
但在第二個日志中, MainActivity.KEY_PROPNAME
和其他字段為空。 另外,當我使用map.get(key)
,所有列都有最后一列的數據。
請注意,最后一列數據已正確填充。
我在這里做錯什么了嗎? 任何幫助表示贊賞。
您在至少三個.put()
中使用相同的鍵""
! 您已定義:
public static final String KEY_PROPNAME = "";
public static final String KEY_KEYWORDS = "";
public static final String KEY_THUMB_URI = "";
然后將Map
填充為:
map.put(KEY_PROPNAME, clipDetailsArr[i]);
map.put(KEY_KEYWORDS, clipDetailsArr[i + 8]);
map.put(KEY_THUMB_URI, clipDetailsArr[i + 9]);
根據Javadoc :
如果該映射先前包含該鍵的映射,則將替換舊值。
public static final String KEY_PROPNAME = "";
public static final String KEY_KEYWORDS = "";
public static final String KEY_THUMB_URI = "";
在這里,您所有的鍵都有相同的值/名稱,因此所有數據都將存儲在同一鍵中!
public static final String KEY_PROPNAME = "";
public static final String KEY_KEYWORDS = "";
public static final String KEY_THUMB_URI = "";
這是錯誤,而不是從您的名稱創建空字符串,您應該將它們用作“鍵”以獲取所需的行為。
只是為了使您的代碼幾乎相同,就可以執行以下操作:
public static final String KEY_PROPNAME = "KEY_PROPNAME";
public static final String KEY_KEYWORDS = "KEY_KEYWORDS";
public static final String KEY_THUMB_URI = "KEY_THUMB_URI";
即使有點時髦,這也應該是竅門;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.