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()方法失效的更多相关文章

  1. IE8下String的Trim()方法失效的解决方法

    String的Trim()方法失效,在ie8下是有这样的情况的,解决方法也很简单使用$.trim(str)即可,需要的朋友可以了解下 用jquery的trim()方法,$.trim(str)就可以了.

  2. jquery中Live方法不可用,Jquery中Live方法失效

    jquery中Live方法不可用,Jquery中Live方法失效 >>>>>>>>>>>>>>>>> ...

  3. 关于ThinkPHP控制器的方法失效的问题

    今天发现控制器的方法失效了,用了排除法,找了长时间的原因,都没有找出来,后来干脆把home模块中的控制器和视图文件都复制到bbs模块下,竟然也不行. 这说明了控制器和视图没有问题,一定是模块的配置有问 ...

  4. Gridview的item含有checkbox,setOnItemClickListener方法失效的问题

    在开发中我们常常遇到一些莫名奇妙的问题,就比如Gridview的item含有checkbox,setOnItemClickListener方法失效的问题. 刚开始网上搜了一下,如http://my.o ...

  5. 使用elementUI的时候,使用Upload 上传的时候,使用 list-type 属性来设置文件列表的样式,before-upload方法失效

    最近在做项目的时候,使用elementUI的时候,使用Upload 上传的时候,before-upload方法失效. 情况下:使用 list-type 属性来设置文件列表的样式. 最终的优化之后:(演 ...

  6. 解决ThinkPHP的Create方法失效而没有提示错误信息的问题

    ThinkPHP中的数据创建Create方法是一个非常有用的功能,它自动根据表单数据创建数据对象(在表字段很多的情况下尤其明显) 但有时候该方法可能并未按照你期望的来工作,比如方法不工作而且还没有提示 ...

  7. IE8下部分方法失效的解决方法

    1.IE8下String的Trim()方法失效的解决方法 用jquery的trim()方法,$.trim(str)就可以了: 例:_id.trim() !='' 改为  $.trim(_id) != ...

  8. List 的 removeAll 方法的效率

    List 的 removeAll 方法的效率低的原因: 要遍历source,对dest进行contain操作,而contain又要遍历dest进行equal比较. 解决办法:dest转为set,用se ...

  9. Disruptor中shutdown方法失效,及产生的不确定性源码分析

    版权声明:原创作品,谢绝转载!否则将追究法律责任. Disruptor框架是一个优秀的并发框架,利用RingBuffer中的预分配内存实现内存的可重复利用,降低了GC的频率. 具体关于Disrupto ...

随机推荐

  1. 如何让MyEclispe中英文切换

    我们通过网上的一些汉化办法汉化了我们的MyEclipse,可是我们有时候想切回英文版怎么办? 方法一:我们可以通过修改MyEclipse配置文件的办法来从中文恢复到英文, -Duser.languag ...

  2. 查看Linux相关信息

    1."uname -a ",可显示电脑以及操作系统的相关信息. 2."cat /proc/version",说明正在运行的内核版本. 3."cat / ...

  3. 3种创建、调用JavaScript对象的方法

    hey you guys,两个月没有写技术博客了.作为一名有理想.有抱负的程序员,两个月不写技术博客,真该打.业精于勤,荒于嬉.行成于思,毁于随.勤奋是必不可少的,今后养成一周至少一篇博客的习惯.好了 ...

  4. Sql Server导出表结构Excel

    SELECT 表名 Then D.name Else '' End, 表说明 Then isnull(F.value,'') Else '' End, 字段序号 = A.colorder, 字段名 = ...

  5. 《APUE》读书笔记第十三章-守护进程

    守护进程 守护进程是生存期较长的一种进程,它们常常在系统自举时启动,仅在系统关闭时才终止.因为它们没有控制终端,所以说它们是在后台运行的.UNIX系统由很多守护进程,它们执行日常事务活动. 本章主要介 ...

  6. IP地址的存储和使用

    ip地址使用int类型存储,用INET_NTOA()和INET_ATON()转换 mysql'),inet_aton('127.0.0.1'); +-------------------------+ ...

  7. java学习笔记 (1) —— Strut2.3.24环境搭建

    1.打开MyEclipse,添加WebProject,名称为testStruts2 2.配置Tomcat环境. 1) 在窗口——首选项——MyEclipse——Servers下找到Tomcat6.x ...

  8. 关于qq创始人----马化腾的一些琐事

    马化腾(pony)写代码的水平如何? 一位产品经理吐槽: 曾经和pony一起写过代码. 当时5个人挤在一个只有四个位置的房间里,埋头开发,用C++.我当时负责写一个通讯模块,有一个bug弄了两天,没有 ...

  9. zip命令的用法

    语法zip [参数] [打包后的文件名] [打包的目录路径] 参数列表-a 将文件转成ASCII模式-F 尝试修复损坏的压缩文件-h 显示帮助界面-m 将文件压缩之后,删除源文件-n 特定字符串,不压 ...

  10. 智能的PHP缩图类

    *作者:落梦天蝎(beluckly)*完成时间:2006-12-18*类名:CreatMiniature*功能:生成多种类型的缩略图*基本参数:$srcFile,$echoType*方法用到的参数:$ ...