HashMap封裝的數據用循環快速添加進list中產生的數據集全部相同的問題


一、問題概述

在一次使用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);
    }

代碼一會產生上述問題,代碼二則能消除問題。

三、說明

產生問題的原因很簡單。發生了覆蓋。仔細一想就能想明白~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM