连续读取人员信息并将其以map形式添加到list当中,如果list中的一条人员信息在30s内未能再一次读到,则将list中的该条信息清除,请问各位前辈有什么实现办法?谢谢!我我采用下面代码并未得到正确结果
//确保list里面放的是不同对象map的堆地址,指向的是不同对象
Map<String, Object> map = new HashMap<String, Object>();
map.put("itemName", name);
//注意此处不可将Bitmap对象直接放入hashmap中,而应传入地址
map.put("itemPhoto", photoPath);
map.put("addTime",System.currentTimeMillis());
Log.v("map", map.toString());
//根据姓名查看list当中是否存在所有项
boolean exist = false;
for(Map<String, Object> tempMap : list){
if(name.equals(tempMap.get("itemName"))){
exist = true;
//如果有则更新时间
tempMap.put("addTime", System.currentTimeMillis());
break;
}
}
//如果不存在,则添加到list当中
if(!exist){
list.add(map);
}
Log.v("removeb2",list.toString());
//遍历list查看有无超时项,有则清空该项
Iterator<Map<String, Object>> it = list.iterator();
while(it.hasNext()){
if(System.currentTimeMillis()-Long.parseLong(it.next().get("addTime").toString())>30000){
it.remove();
}
}
};
}
//将定时任务中获取的List装入ListView中
Message msg = new Message();
msg.what = 1;
handler.sendMessage(msg);
switch (msg.what) {
case 1:
/*tv1.setText(null);
tv2.setText(null);
tv3.setText(null);
img.setImageBitmap(null);*/
SimpleAdapter adapter = new SimpleAdapter(MainActivity.this,list,R.layout.activity_item,
new String[]{"itemName","itemPhoto"},//查询键值获取map中资源
new int[]{R.id.itemName,R.id.itemPhoto});//将获取的资源填入对应项
adapter.notifyDataSetChanged();//刷新adapter从而达到刷新列表的目的。
lv.setAdapter(adapter);