1. 程式人生 > >下拉重新整理後滑動RecyclerView時出現異常: java.lang.IndexOutOfBoundsException

下拉重新整理後滑動RecyclerView時出現異常: java.lang.IndexOutOfBoundsException

這個是RecyclerView 內部存在的一個明顯的 bug。 java.lang.IndexOutOfBoundsException。

使用 RecyclerView 加下拉重新整理的時候,如果繫結的陣列物件在更新資料之前進行了 list.clear(),而這時使用者緊接著迅速上滑 RecyclerView,就會崩潰。出現這個錯誤的原因是在重新整理後清空了原有的資料並且進行了非同步操作,此時滑動列表會出現陣列下標越界的情況。

解決方法:

1.
下拉重新整理方法:

將下拉重新整理方法中的list.clear()放到請求接口裡面去執行。

2.在執行下拉重新整理時,也就是 clear 的同時,讓 RecyclerView 暫時不能夠滑動,當資料請求成功後,再允許滑動即可。這時就是事件的分發機制,在 RecyclerView 初始化的時候加上是否在重新整理進而攔截手勢,定義一個boolean型別的變數來控制RecyclerView是否可以滑動。

mRecyclerView.setOnTouchListener(

        new View.OnTouchListener() {

            @Override

            public boolean onTouch(View v, MotionEvent event) {

                if (IsRf) {

                    return true;

                

} else {

                    return false;

                }

            }

        }

);