1. 程式人生 > >關於解決Recyclerview清除資料時滑動介面造成的奔潰。

關於解決Recyclerview清除資料時滑動介面造成的奔潰。

1,首先遇到的錯誤提示: 

java.lang.IndexOutOfBoundsException: Inconsistency detected .Invalid view holder adapter positionViewHolder{7e70c41 position=3 id=-1, oldPos=-1, :-1 no parent}

2,錯誤分析:當資料列表清空的時候,這時候item也沒有對應的資料,當你再滑動時由於匹配不到對應的資料所以就GG,而且並不指示是哪個地方出錯,應該是recyclerview內部處理問題。

3,解決方法:(1)可以在初始化的時候對recyclerView的觸控進行監聽,當處於資料更新狀態時就設定成不可滑動,更新完成則設定成可滑動,程式碼如下:

recyclerview.setOnTouchListener(
        new View.OnTouchListener() {
            @Override
public boolean onTouch(View v, MotionEvent event) {
                if (mIsRefreshing) {
                    return true;
} else {
                    return false;
}
            }
        }
);

mIsRefreshing為狀態值。

(2),重新整理用dialog,且設定成不能點選外部取消

dialog.setCanceledOnTouchOutside(false);