关于使用set集合时出现java.util.NoSuchElementException错误

仅为在开发过程中对使用鸿洋大神的TagFlowLayout中出现的新问题做一个笔记!
废话不多说,修改调整后的代码先上

if (mBeanTagAdapter == null) {
        mBeanTagAdapter = new TagAdapter<CategoryBean>(mCategoryBeansList) {
            @Override
            public View getView(FlowLayout parent, final int position, CategoryBean str) {
                final View view;
                view = LayoutInflater.from(mActivity).inflate(R.layout.item_evaluation_history, null, false);
                final TextView textView = view.findViewById(R.id.tv_item_evaluation_history);
                textView.setText(str.getTitle());

                return view;
            }
        };
        mFlowLayout.setOnTagClickListener(new TagFlowLayout.OnTagClickListener() {
            @Override
            public boolean onTagClick(View view, int position, FlowLayout parent) {
                mSelectPosStr = mCategoryBeansList.get(position).getTitle();
                mEvaluateET.setText(mALLSelectEditStr);
                return true;
            }
        });
        mFlowLayout.setOnSelectListener(new TagFlowLayout.OnSelectListener() {
            @Override
            public void onSelected(Set<Integer> selectPosSet) {
                //获得所有选中的position集合,例如[1,2,3,4]
                Set<Integer> selectedList = selectPosSet;
                mALLSelectEditStr = new StringBuffer("");
                for (Integer num : selectedList) {
                    LogUtil.e(TAG, num + " ");
                    mSelectPos=num;
                    mSelectPosStr = mCategoryBeansList.get(mSelectPos).getTitle();
                    mALLSelectEditStr.append(mSelectPosStr + " ");
                }

                mEvaluateET.setText(mALLSelectEditStr);
            }
        });
        mFlowLayout.setAdapter(mBeanTagAdapter);
    } else {
        mBeanTagAdapter.notifyDataChanged();
    }

可能一看到这个就会纳闷了,这和你说的问题有毛线关系??嗯?上面的代码也是我改了之后的,这里说明一下问题出现在多选点击事件监听方法中,并且采用获取多选点击内容的方式不一样,即为:

	Iterator<Integer> iterator = selectedList.iterator();
                for (iterator.hasNext();) {
                    LogUtil.e(TAG,"iterator.hasNext()="+iterator.next());
                    if (iterator.hasNext()){
                        mSelectPos=(int)iterator.next();
                        mSelectPosStr=mCategoryBeansList.get(mSelectPos).getTitle();
                        mALLSelectEditStr.append(mSelectPosStr);
                    }
                }

运行就会出现java.util.NoSuchElementException异常,具体原因网上也是可以搜到就不说了,关键是知道这个问题后怎么去更好的解决。其实也是网上也说得清楚,但是对于我这个菜鸟来说,细一看还不如咋一看。自己这里的解决:直接在外出的for循环修改一下

for (Iterator<Integer> iterator = selectedList.iterator();iterator.hasNext();) 

运行!OK 但是我发现这样写太麻烦了,而且调试好数据加大了代码量 ,所以最后还是放弃了该写法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值