作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
有人能告诉我为什么下面的代码会用最近进入 ArrayList 的条目覆盖 ArrayList 中的每个元素吗?或者如何正确地将 hashmaps 的新元素添加到我的 ArrayList?
ArrayList<HashMap<String, String>> prodArrayList = new ArrayList<HashMap<String, String>>();
HashMap<String, String> prodHashMap = new HashMap<String, String>();
public void addProd(View ap)
{
// test arraylist of hashmaps
prodHashMap.put("prod", tvProd.getText().toString());
prodArrayList.add(prodHashMap);
tvProd.setText("");
// check data ///
Log.e("myLog","Data prodArrayList in ADD Method Size = "+prodArrayList.size());
for(int i=0; i< prodArrayList.size();i++)
{
Log.e("myLog","Data prodArrayList in ADD Method = "+prodArrayList.get(i).toString());
}
}
最佳答案
问题:
prodHashMap.put("prod", tvProd.getText().toString());
每次将元素添加到数组列表时,您都在使用相同的键并引用相同的 HashMap
。从而改变它的值(value)。
解决方案:
创建 HashMap
的新实例每次你想把它添加到 ArrayList
以避免在调用 addProd
时更改其值
public void addProd(View ap)
{
// test arraylist of hashmaps
HashMap<String, String> prodHashMap = new HashMap<String, String>();
prodHashMap.put("prod", tvProd.getText().toString());
prodArrayList.add(prodHashMap);
tvProd.setText("");
// check data ///
Log.e("myLog","Data prodArrayList in ADD Method Size = "+prodArrayList.size());
for(int i=0; i< prodArrayList.size();i++)
{
Log.e("myLog","Data prodArrayList in ADD Method = "+prodArrayList.get(i).toString());
}
}
关于java - 如何将 HashMap 添加到 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25293128/
我是一名优秀的程序员,十分优秀!