java.lang.IndexOutOfBoundsException:setSpan(2 ... 2)结束超过长度1

时间:2017-07-18 07:51:02

标签: android

我遇到了这个例外,我是Android的新手,所以请帮助我。

  
    

E / UncaughtException:java.lang.IndexOutOfBoundsException:setSpan(2 ... 2)结束超过长度1

  
    holder.oldLaundriesQuantityEditText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

            if(s.toString().length()>0){
                int editedQuantity = Integer.parseInt(s.toString());

                if(editedQuantity==0){

                    finalHolder.oldLaundriesQuantityEditText.setText("1");

                }
                if(editedQuantity>oldLaundriesModelArrayList.get(position).getRemain_quantity()){

                    finalHolder.oldLaundriesQuantityEditText.setText(String.valueOf(
                            oldLaundriesModelArrayList.get(position).getRemain_quantity()
                    ));

                }

                finalHolder.oldLaundriesQuantityEditText.setSelection(count);
            }

        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

2 个答案:

答案 0 :(得分:3)

如果您已经输入长度为2的文本说“10”,但剩余数量返回单个数字一个说“9”,则会发生此问题,在这种情况下,计数值将为2.并且在设置选择时您是使用计数值,只有一个长度为1的字符串,但设置为2。

而不是

  

finalHolder.oldLaundriesQuantityEditText.setSelection(计数);

使用

  

finalHolder.oldLaundriesQuantityEditText.setSelection(finalHolder.oldLaundriesQuantityEditText.getText()的toString()修剪()长度());

为了更好更清洁,请存储

的值
  

String.valueOf(oldLaundriesModelArrayList.get(position).getRemain_quantity())

在设置为edittext之前

到一个字符串,然后使用相同的字符串对象来获取字符串的长度。

答案 1 :(得分:1)

检查这个oldLaundriesModelArrayList

的大小
if(oldLaundriesModelArrayList.size() > 0 && position <= oldLaundriesModelArrayList.size() ){
    finalHolder.oldLaundriesQuantityEditText.setText(String.valueOf(oldLaundriesModelArrayList.get(position).getRemain_quantity())); 
}