java.lang.IllegalStateException: Cannot call this method while RecyclerView is computing a layout or scrolling
场景:在适配器中有列表输入框,例如:输入下标为1的数据和输入下标为2的数据,下标为3的数据,相加求均值赋值给下标为7的。这时你在输入框监听里面进行逻辑处理后调用 notifyDataSetChanged();
会报错。
问题是这个输入监听的初始化问题
@Override
public void onBindViewHolder(@NonNull MyHodlers myHodlers, int position) {
EditTextListener editTextListener = (EditTextListener) myHodlers.tved.getTag();
if(editTextListener!=null){
myHodlers.tved.removeTextChangedListener(editTextListener);
}
if(!TextUtils.isEmpty(measuredValue1)&&!TextUtils.isEmpty(measuredValue2)&&!TextUtils.isEmpty(measuredValue3)){
float measuredValueNum1 = Float.parseFloat(measuredValue1);
float measuredValueNum2 = Float.parseFloat(measuredValue2);
float measuredValueNum3 = Float.parseFloat(measuredValue3);
anum = (measuredValueNum1+measuredValueNum2+measuredValueNum3)/3;
DecimalFormat decimalFormat = new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
String strPrice = decimalFormat.format(anum);
list.get(7).setMeasuredValue(String.valueOf(strPrice));
notifyDataSetChanged();
}
}// 这段放在输入监听里面
myHodlers.tved.addTextChangedListener(editTextListener);
myHodlers.tved.setTag(editTextListener);
}```
```java
public abstract class EditTextListener implements 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) {
}
@Override
abstract public void afterTextChanged(Editable s);
}