您的位置:首页 > 其它

int 和integer的误用导致 listview的不刷新

2015-11-11 15:43 309 查看
今天犯了一个低级的错误,对int 和integer的使用没有正确。

遇到的情况是这样的:我要刷新listview,可是数据已经重新设置,就是没有刷新,当时数据是这样处理的:

private Map<Integer, MusicInfo> mSelectMap;

public void removeDeleteData(List<MusicInfo> musicInfos) {
// TODO Auto-generated method stub
Iterator iterator = mSelectMap.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry e=(Map.Entry)iterator.next();
Integer key = (Integer) e.getKey();
musicInfos.remove(key.intValue());

System.out.println(e.getKey()+"="+e.getValue()+"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
}
Log.d("pzc", musicInfos.size() + "<<<<<<<<<<<<<<<<<<<<");
mMusicInfos = musicInfos;

//notifyDataSetChanged();
}}

目的就是要重原有的musicInfos数据中删除mSelectMap中有的数据,但是上面的代码有什么问题呢?

问题就在于

Integer key = (Integer) e.getKey();
musicInfos.remove(key.intValue());


musicInfos.remove(int arg0)和musicInfos.remove(object arg0);两种方法,我们要的是musicInfos.remove(int arg0)这个,而使用上面代码走的却是musicInfos.remove(object arg0),导致我的数据一直保持原样,没有更新,为什么呢?

因为integer是int的封装,它是一个对象。

java.lang.Integer是一个类.对它的操作要通过类的方法   

  int是JAVA缺省的8中基本数据类型之一.不是类的对象.

int是基本数据类型,Integer是对int进行了封装的一个类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: