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 ...
随机推荐
- js判断值是否为数字
js判断是否是数字 第一种方法 isNaN isNaN 返回一个 Boolean 值,指明提供的值是否是保留值 NaN (不是数字). NaN 即 Not a Number isNaN(numValu ...
- Search 和 Select比较 - 浅谈
Search 语法: public IFeatureCursor Search ( IQueryFilter filter, bool Recycling); Select 语法: pub ...
- 编译osg for android
做osg数数已经快两年了,之前将一些opengl的代码搬到了osg上,现在将一些osg的代码搬到了android上,尝试看看效果. 首先是编译的事情,android for android在http: ...
- mysql 存储过程与函数
即事先经过编译并存储在数据库中的一段sql语言. 一.创建函数 创建格式: CREATE FUNCTION sp_name ([func_parameter[,...]]) RETURNS type ...
- js+css:43种常见的浏览器兼容性问题大汇总
javascript 1.HTML对象获取问题 FireFox:document.getElementById(“idName”); ie:document.idname或者document.getE ...
- java学习笔记 (8) —— Struts2 实现上传
1.新建upload.jsp <%@ page language="java" import="java.util.*" pageEncoding=&qu ...
- WDCP控制面板的常用liunx命令集
WDCP是在linux下的一款常用的服务器可视化管理面板,是新手使用linux搭建网站的福音.本文不过多的介绍WDCP是什么,如果需要了解的话,可以至WDCP官方介绍页面查看. 今天博主准备查看网站系 ...
- 阿里云服务器上架设apache php mysql 环境
由于朋友一公司要做企业站,于是就买了阿里云的服务器.买完进去发现iptables 和selinux默认就是关掉的,可能是因为阿里云有云盾就可以不用自带的防火墙吧,具体配置过程如下(我边配边记录的): ...
- windows 挂载linux nfs
windwos挂载linux主机NFS 启动windos NFS客户端服务: 1. 打开控制面板->程序->打开或关闭windows功能->NFS客户端 勾选NFS客户端,即开启wi ...
- 2015第19周四jquery版本
今天用到一个jquery插件,发现最新版需要jquery2.0以上版本才行,而目前项目在用的版本是1.8.3,自然无法使用,刚看了jquery的主要版本和差异,直接百度搜索无满意结果,最后在百科中给出 ...