有个让我头大的问题,请朋友帮忙看一下,万分感谢!我用查询数据库,将查询结果用HashMap存入ArrayList中,在循环存储时,每个Map内的值是不同的,存两个值为A和B,结果ArrayList的值最后却变成两个都是B我以前是正常的,不知何种原因突然变成这种现象了,请高手指点!代码:
i=0;
while(cursor2.moveToNext())
{
map.put("name", cursor2.getString(cursor2.getColumnIndex("name")));
list.add(map);
Log.i(TAG,"加后实时显示 map "+i+" "+String.valueOf(map.get("name")));
Log.i(TAG,"加后实时显示 list "+0+" "+String.valueOf(((HashMap) (list.get(0))).get("name")));
i=i+1;
}
i=0;
if (list.size()>0)
{
for (i=0;i<list.size();i++)
{
Log.i(TAG,"循环显示 list"+i+" "+String.valueOf(((HashMap) (list.get(i))).get("name")));
}
}
调试结果
加后实时显示 map 0 A
加后实时显示 list 0 A
加后实时显示 map 1 B
加后实时显示 list 0 B
循环显示 list 0 B
循环显示 list 1 B
i=0;
while(cursor2.moveToNext())
{
map.put("name", cursor2.getString(cursor2.getColumnIndex("name")));
list.add(map);
Log.i(TAG,"加后实时显示 map "+i+" "+String.valueOf(map.get("name")));
Log.i(TAG,"加后实时显示 list "+0+" "+String.valueOf(((HashMap) (list.get(0))).get("name")));
i=i+1;
}
i=0;
if (list.size()>0)
{
for (i=0;i<list.size();i++)
{
Log.i(TAG,"循环显示 list"+i+" "+String.valueOf(((HashMap) (list.get(i))).get("name")));
}
}
调试结果
加后实时显示 map 0 A
加后实时显示 list 0 A
加后实时显示 map 1 B
加后实时显示 list 0 B
循环显示 list 0 B
循环显示 list 1 B
解决方案 »
- 爱可视9 G2(ARNOVA9 G2)平板坏了
- 以下java关于图像的代码的等价android代码是怎么样的?
- 有人使用surfaceview+camera api做出过能够连续拍摄的相机吗?
- 在activity中让View刷新,怎么做?
- ExpandableListView的问题
- Android中如何利用Button或者OnTouch事件实现多界面的切换?
- TabHost里面怎么添加控件
- 模拟器运行正常,真机测试出错
- 看大家android界面设计是拿Android Design UI Kit设计的,不直接在eclipse里设计,但是UI KIT怎么用呢
- Eclipse中看不到ActivityThread.java的源码
- 请教大家一个Scroller的问题
- Android系统监控
HashMap<String,String> map = new HashMap<String,String>();
你可以在while循环上面写一句
map.clear();
把这个hashMap中上次保存的东西清空希望可以帮到楼主噢。
你在while里面每次都把HashMap new 出来就行了
加载循环内部,每次循环式就新建一个新的对象,就不会重复了...
测试的结果是ArrayList中的调试结果都为空。
如果链表大话,就不要在里面new了,。这样很耗内存的,能否指点一下不耗内存的方法?