一、問題概述
在一次使用SimpleAdapter時,Data需要使用傳入一條數據(Image、Text),該數據條使用HashMap封裝。在用HashMap封裝的數據用循環快速添加進list中產生了數據集全部相同的問題
二、問題解決
觀察下面兩段代碼,發現只是map的聲明位置不同,但是運行出的結果卻相去甚遠。
//代碼一
List<HashMap<String, Object>> mMenuData = new ArrayList<>();
HashMap<String, Object> map = new HashMap<>();
for (int i = 0; i < menuShareImg.length; i++) {
map.put("shareStr", menuShareStr[i]);
map.put("shareImg", menuShareImg[i]);
mMenuData.add(map);
}
//代碼二
List<HashMap<String, Object>> mMenuData = new ArrayList<>();
for (int i = 0; i < menuShareImg.length; i++) {
HashMap<String, Object> map = new HashMap<>();
map.put("shareStr", menuShareStr[i]);
map.put("shareImg", menuShareImg[i]);
mMenuData.add(map);
}
代碼一會產生上述問題,代碼二則能消除問題。
三、說明
產生問題的原因很簡單。發生了覆蓋。仔細一想就能想明白~~