简体   繁体   English

Android - 在SwipeRefreshLayout加载时单击RecyclerView时崩溃

[英]Android - Crash when clicking on RecyclerView when SwipeRefreshLayout loading

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. 我在SwipeRefreshLayout有一个RecyclerView ,当我重新加载我的页面时,当加载SwipeRefreshLayout时,我点击RecyclerView上的项目它就崩溃了。

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/? 04-21 13:14:49.675 182-1124 /? E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 57 E / IMGSRV :: 0:PVRDRMOpen:TP3,ret = 57

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. 根据我的理解你的问题和日志基本上是你清除onRefresh()arraylist但不通知适配器列表已被清除。

Please call notifyDataSetChanged() after clearing arraylist 清除arraylist后请调用notifyDataSetChanged()

Seems like you have cleared your list upon refresh, but the items are still in your recyclerview. 您似乎已经在刷新后清除了列表,但这些项目仍在您的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?! 在你目前的情况下,开始滚动可能会导致应用程序崩溃?!

你应该把条件用于检查(例如,数组,ArrayList ...你使用的)数据的大小

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM