啥也不说,先看图,然后给你讲需求!
技能中只能添加三项,如果选择超过三个就给提示,选中的可以再次点击就是删除,这个肯定不难,但是做着发现一个问题,在这记录下,我的做法是把定义一个集合,然后当用户点击的时候判断这个是否在集合中如果在集合中就删除,如果不在集合中就添加,然后就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