我遇到了这个例外,我是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) {
}
});
答案 0 :(得分:3)
如果您已经输入长度为2的文本说“10”,但剩余数量返回单个数字一个说“9”,则会发生此问题,在这种情况下,计数值将为2.并且在设置选择时您是使用计数值,只有一个长度为1的字符串,但设置为2。
而不是
finalHolder.oldLaundriesQuantityEditText.setSelection(计数);
使用
finalHolder.oldLaundriesQuantityEditText.setSelection(finalHolder.oldLaundriesQuantityEditText.getText()的toString()修剪()长度());
为了更好更清洁,请存储
的值在设置为edittext之前String.valueOf(oldLaundriesModelArrayList.get(position).getRemain_quantity())
到一个字符串,然后使用相同的字符串对象来获取字符串的长度。
答案 1 :(得分:1)
检查这个oldLaundriesModelArrayList
的大小if(oldLaundriesModelArrayList.size() > 0 && position <= oldLaundriesModelArrayList.size() ){
finalHolder.oldLaundriesQuantityEditText.setText(String.valueOf(oldLaundriesModelArrayList.get(position).getRemain_quantity()));
}