android 一个集合问题导致不得不说的故事

啥也不说,先看图,然后给你讲需求!

技能中只能添加三项,如果选择超过三个就给提示,选中的可以再次点击就是删除,这个肯定不难,但是做着发现一个问题,在这记录下,我的做法是把定义一个集合,然后当用户点击的时候判断这个是否在集合中如果在集合中就删除,如果不在集合中就添加,然后就adapter.notifyDataSetChanged()就完事,先把我写的点击事件相关逻辑贴一下:

@Override
	public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
		if(clickPositions.contains(position)){//如果包含的话就是删除
			count--;
			clickPositions.remove(position);
		}else{
			count++;
			if(count>3){
				ShowToast.show("最多可添加三项哦");
				return;
			}
			clickPositions.add(position);
		}
		adapter.notifyDataSetChanged();
	}

然后当你要删除的时候 它会报角标越界!真是百思不得琪姐啊,后来发现List集合中存放的是Integer类型,而我romove的时候是直接把position传递进去的,这样会以为你是删除第几个集合中对应的值,而其实你就是想删除item对应的position,

解决方案:把position包装成对象即可 一句话的事clickPositions.remove(new Integer(position));

再次记录下!

时间: 2024-10-05 05:07:59

android 一个集合问题导致不得不说的故事的相关文章

android:一个Open键引发的问题!!

1.问题简介 首先描述一下问题,当我们安装完APP的时候,界面会显示两个按钮,一个完成键,一个Open键,点击Open键之后,进入应用.此时,我们点击HOME键,程序将会后台.然后再点击该桌面上应用程序的图标,巨大的BUG出现了:app会重新启动!而不是将原来的界面onresume!如果你的应用对多次启动不敏感,这道没什么,但是,如果你的应用对多次启动很敏感,你就必须做处理了. 2.解决方案 首先分析问题成因,在android目前的系统下(最新的为4.4.3),点击Open键和点击图标启动时,I

android广播集合,intent,action

android.permission.ACCESS_CHECKIN_PROPERTIES 允许读写访问"properties"表在checkin数据库中,改值可以修改上传( Allows read/write access to the "properties" table in the checkin database, to change values that get uploaded) android.permission.ACCESS_COARSE_LOC

用一个集合这么难?

集合   有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否 否 HashSet TreeSet 是(用二叉树排序) Map AbstractMap 否 使用key-value来映射和存储数据,Key必须惟一,value可以重复 HashMap TreeMap 是(用二叉树排序) 目的: 用数组存储数据时只能具有简单的组织形式,而且大小有时候也不确定的需求也无法满足,因此需要具有更多操作的集合来进行数据存储 分类: Vector(矢量) B

Android一个应用多个图标的几种实现方式

本文标签: Android activity-alias 新需求我的应用将有多个ICON入口..最终选择了 activity-alias , 其实实现多图标有好几种方式 1. 多Activity + intent-filter方式 因为launcher会扫描app中含有以下intent-filter属性的标签, 有的话就会将其添加到桌面.所以只要在你想添加到桌面的activity下加上以下标签即可. <intent-filter> <action android:name="a

android 一个Activity多个listview

当我们直接在布局文件中写三个listview的时候,会出现三个滚动条,并且每个listview都只显示一个item,要改动才显示更多.怎么做才好了? 办法是有得:用一个ScrollView包含一个大布局,然后把这三个listview加到里面去. 新建一个布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.andro

枚举一个集合的所有子集

一个神奇的算法,在题目中看到的,单独拿出来整理枚举一个集合S(用一个二进制表示)的所有子集S0: for(int S0 = S; S0; S0 = (S0-1)&S){}

从一个弱引用导致的奔溃 谈 weak assign strong的应用场景【iOS开发教程】

从一个弱引用导致的奔溃 谈 weak assign strong的应用场景 .h中的定义方法一: @property (nonatomic, assign) NSArray *dataSource; 定义方法二 @property (nonatomic, strong) NSArray *dataSource; .m中的实现方法 - (void)viewDidLoad { [super viewDidLoad]; if (YES) { NSArray *array = @[@"1",

有一个集合,判断集合里有没有“world”这个元素,如果有,添加“javaee”

// 有一个集合,判断集合里有没有"world"这个元素,如果有,添加"javaee" List list = new ArrayList(); list.add("world"); list.add("java"); list.add("hello"); //ConcurrentModificationException /*Iterator it = list.iterator(); while(it.

一个Xamarin.Android中与intent有关的&quot;动人&quot;爱情故事

一个Xamarin.Android中与intent有关的"动人"爱情故事 第一步,写项目中的第一个界面. <?xml version="1.0" encoding =" utf-8" ?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation= "vertical &q