Android - Crash when clicking on RecyclerView when SwipeRefreshLayout loading

 ̄綄美尐妖づ 提交于 2019-12-01 08:11:04

问题


I have a RecyclerView inside a SwipeRefreshLayout , when I reload my page , when SwipeRefreshLayout is loading, I click on the item on the RecyclerView and it crashes.

04-21 13:14:49.605 25586-25586/? E/AndroidRuntime: FATAL EXCEPTION: main
                                               Process: com.boxopen.funstack, PID: 25586
                                               java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
                                                   at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
                                                   at java.util.ArrayList.get(ArrayList.java:308)
                                                   at com.boxopen.funstack.adapter.RecycleBookAdapter$BookViewHolder.onClickLike(RecycleBookAdapter.java:339)
                                                   at com.boxopen.funstack.adapter.RecycleBookAdapter$BookViewHolder.access$100(RecycleBookAdapter.java:64)
                                                   at com.boxopen.funstack.adapter.RecycleBookAdapter$BookViewHolder$2.onDoubleClick(RecycleBookAdapter.java:122)
                                                   at com.boxopen.funstack.listener.DoubleClickListener.onClick(DoubleClickListener.java:36)
                                                   at android.view.View.performClick(View.java:4478)
                                                   at android.view.View$PerformClick.run(View.java:18698)
                                                   at android.os.Handler.handleCallback(Handler.java:733)
                                                   at android.os.Handler.dispatchMessage(Handler.java:95)
                                                   at android.os.Looper.loop(Looper.java:149)
                                                   at android.app.ActivityThread.main(ActivityThread.java:5268)
                                                   at java.lang.reflect.Method.invokeNative(Native Method)
                                                   at java.lang.reflect.Method.invoke(Method.java:515)
                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
                                                   at dalvik.system.NativeStart.main(Native Method)

04-21 13:14:49.675 182-1124/? E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 57


回答1:


From what i understand by your question and log is basically you are clearing the arraylist in onRefresh() but not notifying the adapter that the list has been cleared.

Please call notifyDataSetChanged() after clearing arraylist




回答2:


Seems like you have cleared your list upon refresh, but the items are still in your recyclerview. You should notify your adapter that the list is empty now. In your current situation, starting to scroll will probably cause the application to crash as well?!




回答3:


you should put condition for check the size of (for eg. array, ArrayList ... used by you ) data



来源:https://stackoverflow.com/questions/36761161/android-crash-when-clicking-on-recyclerview-when-swiperefreshlayout-loading

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!