List.removeAll()方法失效
List.removeAll()方法失效
前几天遇到List.removeAll()方法失效,测试了半天都没测出来,后面跟老大在那边调试了半天,最后终于找出原因,以后要是谁遇到这个奇葩的问题可以借鉴参考下,或许会对你有所帮助,废话不多说,直接上代码
显示数据的主页面
public class MainActivity extends Activity {
private ListView listview1;
private List<BPOS_HospitalUnInStockInfo> list1;
private List<BPOS_HospitalUnInStockInfo> list2;
private AddValue value;
private MyAdapter myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listview1=(ListView) findViewById(R.id.listview1);
value =new AddValue();
list1=value.setValue();
myAdapter=new MyAdapter(list1);
listview1.setAdapter(myAdapter);
listview1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
BPOS_HospitalUnInStockInfo info=(BPOS_HospitalUnInStockInfo) arg0.getItemAtPosition(arg2);
if(list2==null){
list2=new ArrayList<BPOS_HospitalUnInStockInfo>();
}
list2.add(info);
if(list2!=null){
//value =new AddValue();
//list1=value.setValue();
boolean b=list1.removeAll(list2);
myAdapter.setList(list1);
}
}
});
}
private class MyAdapter extends BaseAdapter{
List<BPOS_HospitalUnInStockInfo> list;
public MyAdapter(List<BPOS_HospitalUnInStockInfo> list) {
// TODO Auto-generated constructor stub
this.list=list;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public void setList(List<BPOS_HospitalUnInStockInfo> list){
this.list=list;
notifyDataSetChanged();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder viewHolder=null;
if(convertView==null){
viewHolder=new ViewHolder();
convertView=View.inflate(MainActivity.this, R.layout.myitem, null);
viewHolder.textView=(TextView) convertView.findViewById(R.id.textview3);
convertView.setTag(viewHolder);
}else{
viewHolder=(ViewHolder) convertView.getTag();
}
viewHolder.textView.setText(list.get(position).getChengfenming());
final String str=viewHolder.textView.getText().toString();
return convertView;
}
class ViewHolder{
TextView textView;
}
}
}
用来测试的实体
public class BPOS_HospitalUnInStockInfo {
private String yiyuanzhujian;
private String id;
private String xueyechengfeng;
private String chengfenming;
private String rh;
private double ashuliang;
private double bshuliang;
private double oshuliang;
private double abshuliang;
private double adaishu;
public String getYiyuanzhujian() {
return yiyuanzhujian;
}
public void setYiyuanzhujian(String yiyuanzhujian) {
this.yiyuanzhujian = yiyuanzhujian;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getXueyechengfeng() {
return xueyechengfeng;
}
public void setXueyechengfeng(String xueyechengfeng) {
this.xueyechengfeng = xueyechengfeng;
}
public String getChengfenming() {
return chengfenming;
}
public void setChengfenming(String chengfenming) {
this.chengfenming = chengfenming;
}
public String getRh() {
return rh;
}
public void setRh(String rh) {
this.rh = rh;
}
public double getAshuliang() {
return ashuliang;
}
public void setAshuliang(double ashuliang) {
this.ashuliang = ashuliang;
}
public double getBshuliang() {
return bshuliang;
}
public void setBshuliang(double bshuliang) {
this.bshuliang = bshuliang;
}
public double getOshuliang() {
return oshuliang;
}
public void setOshuliang(double oshuliang) {
this.oshuliang = oshuliang;
}
public double getAbshuliang() {
return abshuliang;
}
public void setAbshuliang(double abshuliang) {
this.abshuliang = abshuliang;
}
public double getAdaishu() {
return adaishu;
}
public void setAdaishu(double adaishu) {
this.adaishu = adaishu;
}
@Override
public String toString() {
return "BPOS_HospitalUnInStockInfo [yiyuanzhujian=" + yiyuanzhujian
+ ", id=" + id + ", xueyechengfeng=" + xueyechengfeng
+ ", chengfenming=" + chengfenming + ", rh=" + rh
+ ", ashuliang=" + ashuliang + ", bshuliang=" + bshuliang
+ ", oshuliang=" + oshuliang + ", abshuliang=" + abshuliang
+ ", adaishu=" + adaishu + "]";
}
}
为实体添加数据的类
public class AddValue {
public List<BPOS_HospitalUnInStockInfo> setValue(){
List<BPOS_HospitalUnInStockInfo> list=new ArrayList<BPOS_HospitalUnInStockInfo>();
BPOS_HospitalUnInStockInfo info;
for(int i=0;i<10;i++){
info=new BPOS_HospitalUnInStockInfo();
info.setAbshuliang(i+1);
info.setAdaishu(i+1);
info.setAshuliang(i+1);
info.setBshuliang(i+1);
info.setChengfenming("Chengfenming"+(i+1));
info.setId("Id"+(i+1));
info.setOshuliang(i+1);
info.setRh("RH"+(i+1));
info.setXueyechengfeng("Xueyechengfeng"+(i+1));
info.setYiyuanzhujian("Yiyuanzhujian"+(i+1));
list.add(info);
}
return list;
}
}
主布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<ListView
android:id="@+id/listview1"
android:layout_width="match_parent"
android:layout_height="match_parent"></ListView>
</RelativeLayout>
item布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:baselineAligned="false" >
<TextView
android:id="@+id/textview3"
android:layout_margin="5dp"
android:layout_width="0dp"
android:layout_weight="1"
android:text="文本3"
android:layout_height="wrap_content"/>
</LinearLayout>
造成list.removeAll失败的原因就是因为
//value =new AddValue();
//list1=value.setValue();
这两句代码,把原先的数据重新实例化,重新获取list1的值。
虽然获取到新的list1和原来的值是一样的,但是系统已经无法准确校对list2了,也就是无法正常移除list2中的值(个人猜测可能是跟内存有关,请大神们支招,给出合理的解释吧)
个人还测试了一下,如果list1放的是string,重新给list1赋值,list.removeAll()仍然有效
后记:如果写的不好,不足之处请大家批评指出,欢迎大家吐槽
List.removeAll()方法失效的更多相关文章
- IE8下String的Trim()方法失效的解决方法
String的Trim()方法失效,在ie8下是有这样的情况的,解决方法也很简单使用$.trim(str)即可,需要的朋友可以了解下 用jquery的trim()方法,$.trim(str)就可以了.
- jquery中Live方法不可用,Jquery中Live方法失效
jquery中Live方法不可用,Jquery中Live方法失效 >>>>>>>>>>>>>>>>> ...
- 关于ThinkPHP控制器的方法失效的问题
今天发现控制器的方法失效了,用了排除法,找了长时间的原因,都没有找出来,后来干脆把home模块中的控制器和视图文件都复制到bbs模块下,竟然也不行. 这说明了控制器和视图没有问题,一定是模块的配置有问 ...
- Gridview的item含有checkbox,setOnItemClickListener方法失效的问题
在开发中我们常常遇到一些莫名奇妙的问题,就比如Gridview的item含有checkbox,setOnItemClickListener方法失效的问题. 刚开始网上搜了一下,如http://my.o ...
- 使用elementUI的时候,使用Upload 上传的时候,使用 list-type 属性来设置文件列表的样式,before-upload方法失效
最近在做项目的时候,使用elementUI的时候,使用Upload 上传的时候,before-upload方法失效. 情况下:使用 list-type 属性来设置文件列表的样式. 最终的优化之后:(演 ...
- 解决ThinkPHP的Create方法失效而没有提示错误信息的问题
ThinkPHP中的数据创建Create方法是一个非常有用的功能,它自动根据表单数据创建数据对象(在表字段很多的情况下尤其明显) 但有时候该方法可能并未按照你期望的来工作,比如方法不工作而且还没有提示 ...
- IE8下部分方法失效的解决方法
1.IE8下String的Trim()方法失效的解决方法 用jquery的trim()方法,$.trim(str)就可以了: 例:_id.trim() !='' 改为 $.trim(_id) != ...
- List 的 removeAll 方法的效率
List 的 removeAll 方法的效率低的原因: 要遍历source,对dest进行contain操作,而contain又要遍历dest进行equal比较. 解决办法:dest转为set,用se ...
- Disruptor中shutdown方法失效,及产生的不确定性源码分析
版权声明:原创作品,谢绝转载!否则将追究法律责任. Disruptor框架是一个优秀的并发框架,利用RingBuffer中的预分配内存实现内存的可重复利用,降低了GC的频率. 具体关于Disrupto ...
随机推荐
- Ubuntu SSH 客户端的应用 | sshfs映射远程文件系统为本地磁盘
SSH是指Secure Shell,是一种安全的传输协议. Ubuntu客户端通过SSH访问远程服务器 ,以下步骤是客户端 的配置方法: 1. sudo apt-get install ssh 2. ...
- Jenkins学习之——(1)Jenkins的安装与配置
1.最近公司要求做自动化部署,于是自学了jenkins.这个参考书很少,网上的文章也讲得很模糊,于是打算把自己学习东西记下来,希望对大家有所帮助. 一.jenkins的安装 到jenkins官网(ht ...
- 《Hadoop权威》学习笔记四:Hadoop的I/O
一.数据完整性 二.压缩 三.序列化 基本概念 序列化指的是将结构化对象转化为字节流以便于通过网络进行传输或写入持久化存储的过程 反序列化指的是将字节流转为一系列结构化对象的过程. 进程间通信 ...
- (转)函数中使用 ajax 异步 同步 返回值错误 主函数显示返回值总是undefined -- ajax使用总结
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAloAAAE0CAIAAAB7LwoKAAAgAElEQVR4nO2dy6sc152A6+/R2mXwSn ...
- css中的颜色值
下面是比较适合在测试页面中用来设置背景颜色的淡颜色,最好记住一些,dark.blue.red.green.gray.olive颜色较深.
- jquery多级联动(ajax查数据库)
/id 代表下级下拉框ID,cityCode代表的是父级菜单代码,所有级菜单在同一张表,后台在加载是把菜单已经加入到Map缓存中.... //id 代表下级下拉框ID,cityCode代表的是父级菜单 ...
- google 地图,多个标记 js库
360 云盘:http://yunpan.cn/cVgU3X7JFxAGY (提取码:1f07) 百度云盘:链接: http://pan.baidu.com/s/1c0fbCWw 密码: w1pm 参 ...
- Lintcode--011(打劫房屋2)
在上次打劫完一条街道之后,窃贼又发现了一个新的可以打劫的地方,但这次所有的房子围成了一个圈,这就意味着第一间房子和最后一间房子是挨着的.每个房子都存放着特定金额的钱.你面临的唯一约束条件是:相邻的房子 ...
- jquery幻灯片--渐变
网站上为了设计,需要一些幻灯片效果,现在网站有很多插件可以使用. 想要成为以为牛逼的程序员,绝对不允许只会用别人的插件而已,不然你只能是“代码”的搬运工,而不敢做出自己的创新. 首先使用jquery做 ...
- Window Ghosting(仍可拖动失去响应的窗口,因为我们真正的窗口已经让系统用Ghosting窗口替代了。使用IsHungAppWindow 探测)
最近工作中遇到Window Ghosting这个问题, 感觉挺有意思,这里简单记录下. 在XP时代我们的程序没有响应后只能通过任务管理器强制杀掉,但是Vista之后情况变了, 我们仍然可以拖动 ...