Java 在快速滚动并调用BindViewHolder上的API后,RecyclerView崩溃

Java 在快速滚动并调用BindViewHolder上的API后,RecyclerView崩溃,java,android,android-recyclerview,Java,Android,Android Recyclerview,您可以从onBindView中删除下面的代码段,并将其添加到另一个方法中,该方法需要在用户执行相关操作时触发 02-10 09:06:39.430 1600-1600/? E/BoostFramework: Exception java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, jav

您可以从
onBindView
中删除下面的代码段,并将其添加到另一个方法中,该方法需要在用户执行相关操作时触发

02-10 09:06:39.430 1600-1600/? E/BoostFramework: Exception java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[])' on a null object reference
02-10 09:06:39.476 16831-17154/? E/AndroidCll-SettingsSync: Could not get or parse settings
02-10 09:06:39.547 16831-17062/? E/Appboy v2.5.0 .bo.app.cj: Received server error from request: invalid_api_key
02-10 09:06:39.547 16831-17062/? E/Appboy v2.5.0 .bo.app.ci: Error occurred while executing Braze request: invalid_api_key
02-10 09:06:39.603 16831-17154/? E/AndroidCll-SettingsSync: Could not get or parse settings
02-10 09:06:39.759 1600-1600/? E/BoostFramework: Exception java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[])' on a null object reference
02-10 09:06:41.294 16594-16594/sa.digitrends.rahah.doctor E/AndroidRuntime: FATAL EXCEPTION: main
    Process: sa.digitrends.rahah.doctor, PID: 16594
    java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference
        at sa.digitrends.doctor.adapter.AdapterVitalPatient$ViewHolder.updateRecords(AdapterVitalPatient.java:125)
        at sa.digitrends.doctor.adapter.AdapterVitalPatient$ViewHolder$1.onResponse(AdapterVitalPatient.java:106)
        at sa.app.base.retrofit.client.NetworkClient$1.onResponse(NetworkClient.java:60)
        at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
        at android.os.Handler.handleCallback(Handler.java:754)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:163)
        at android.app.ActivityThread.main(ActivityThread.java:6238)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:933)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
02-10 09:06:41.761 16831-16831/? E/Referral: (LauncherApplication.java:890) restarted

然后,您可以在该
public void onResponse(布尔结果,字符串completerensponse)中获得成功响应后执行
notifydatasetchanged
您可以从
onBindView
中删除下面的代码段,并将其添加到另一个方法中,该方法需要在用户执行相关操作时触发

02-10 09:06:39.430 1600-1600/? E/BoostFramework: Exception java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[])' on a null object reference
02-10 09:06:39.476 16831-17154/? E/AndroidCll-SettingsSync: Could not get or parse settings
02-10 09:06:39.547 16831-17062/? E/Appboy v2.5.0 .bo.app.cj: Received server error from request: invalid_api_key
02-10 09:06:39.547 16831-17062/? E/Appboy v2.5.0 .bo.app.ci: Error occurred while executing Braze request: invalid_api_key
02-10 09:06:39.603 16831-17154/? E/AndroidCll-SettingsSync: Could not get or parse settings
02-10 09:06:39.759 1600-1600/? E/BoostFramework: Exception java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[])' on a null object reference
02-10 09:06:41.294 16594-16594/sa.digitrends.rahah.doctor E/AndroidRuntime: FATAL EXCEPTION: main
    Process: sa.digitrends.rahah.doctor, PID: 16594
    java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference
        at sa.digitrends.doctor.adapter.AdapterVitalPatient$ViewHolder.updateRecords(AdapterVitalPatient.java:125)
        at sa.digitrends.doctor.adapter.AdapterVitalPatient$ViewHolder$1.onResponse(AdapterVitalPatient.java:106)
        at sa.app.base.retrofit.client.NetworkClient$1.onResponse(NetworkClient.java:60)
        at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
        at android.os.Handler.handleCallback(Handler.java:754)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:163)
        at android.app.ActivityThread.main(ActivityThread.java:6238)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:933)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
02-10 09:06:41.761 16831-16831/? E/Referral: (LauncherApplication.java:890) restarted

然后,在获得成功响应后,您可以执行
notifydatasetchanged
,该
public void onResponse(布尔结果,字符串completerensponse)

您似乎遇到了服务器错误


Appboy v2.5.0.bo.app.cj:从请求接收到服务器错误:无效的_api_密钥02-10 09:06:39.547 16831-17062/?E/Appboy v2.5.0.bo.app.ci:执行钎焊请求时出错:无效的api密钥02-10 09:06:39.603 16831-17154

您似乎有服务器错误


Appboy v2.5.0.bo.app.cj:从请求接收到服务器错误:无效的_api_密钥02-10 09:06:39.547 16831-17062/?E/Appboy v2.5.0.bo.app.ci:执行钎焊请求时出错:无效的api密钥02-10 09:06:39.603 16831-17154

错误是由于
NullPointerException

if (mList.get(position).getSummary() != null) {
        holder.updateRecords(mList.get(position).getSummary());
    } else {
        try {
            holder.callApi(p.getEmail(), position);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
更新
updateRecords
方法如下

java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference

错误是由于
NullPointerException

if (mList.get(position).getSummary() != null) {
        holder.updateRecords(mList.get(position).getSummary());
    } else {
        try {
            holder.callApi(p.getEmail(), position);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
更新
updateRecords
方法如下

java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference

您应该调用onbindviewholder()以外的api。。由于Api获取数据需要额外的时间。。。此时,视图崩溃。如果您是通过一些库(如volley)调用api,那么它会在第二个线程中调用api,该线程无法在调用函数时加入,这似乎是空指针异常,因为数据在执行后很晚才获取。您应该调用非onbindviewholder()的api。。由于Api获取数据需要额外的时间。。。此时,视图崩溃。若您是通过一些库(如volley)调用api,那个么它会在第二个线程中调用api,而该线程无法在调用函数时加入api,这似乎是空指针异常,因为执行后数据被延迟提取。
InjectUtils.getGsonObj().fromJson(completeResponse, token)