我有一个问题,我在这里了解到错误已被修复,我应该确保我在主线程上插入数据并调用适当的通知。我这样做了,但我仍然得到这个异常。
onLoadFinisher方法(我正在使用加载器加载更多数据)
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data)
{
switch (loader.getId())
{
case UP_LOADER_ID:
Log.d("Adapter", "Thread: "+Thread.currentThread().getName());
days.put(firstDate, data);
notifyItemRangeInserted(0, data.getCount()+1);
loadingUp = false;
break;
case DOWN_LOADER_ID:
days.put(lastDate, data);
notifyItemRangeInserted(getItemCount(), data.getCount()+1);
loadingDown = false;
break;
default:
throw new IllegalArgumentException("Unknown loader id: " + loader.getId());
}
}
日志
I/OpenGLRenderer: Initialized EGL, version 1.4
D/Adapter: Thread: main
D/Adapter: Thread: main
D/Adapter: Thread: main
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: net.antilopa, PID: 6406
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder{fa4fb40 position=42 id=-1497045600000, oldPos=21, pLpos:21 scrap [attachedScrap] tmpDetached not recyclable(1) no parent}
at android.support.v7.widget.RecyclerView$Recycler.validateViewHolderForOffsetPosition(RecyclerView.java:5220)
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5402)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5363)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5359)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2141)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1525)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1488)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:585)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep1(RecyclerView.java:3457)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3252)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3767)
at android.view.View.layout(View.java:16722)
at android.view.ViewGroup.layout(ViewGroup.java:5438)
您可以用getItemCount()-1替换getItemCount(),因为getItemCount()返回计数数,但索引值为getitem计数()-1。
case DOWN_LOADER_ID:
days.put(lastDate, data);
notifyItemRangeInserted(data.getCount()-1, data.getCount()+1);
loadingDown = false;
break;
我的应用程序中有回收器视图。UI类似于Google Play Store应用程序。它有两个视图寻呼机和项目的列表和网格以交替的方式。所有数据都是从web服务中提取的,并在两个API调用中被分叉。列表和网格的数据是从另一个API填充的。问题是,当我快速滚动recyclerview时,我会遇到这种崩溃。滚动recyclerview时,用于在列表/网格中加载数据的API调用来自。阅读了许多关于这个主题的
我们的QA检测到了一个bug:当旋转Android设备(Droid Turbo)时,发生了以下与RecyclerView相关的崩溃: java.lang.IndexOutOfBoundsException:检测到不一致。无效的物料位置%2(偏移量:%2)。状态:%3 对我来说,这看起来像是RecyclerView内部的一个内部错误,因为我想不出这是由我们的代码直接导致的任何方式... 有人遇到过这
致命异常:检测到java.lang.IndexOutOfBoundsException不一致。无效的物料位置5(偏移量:5)。状态:24 这种撞车的情况太多了!!! 我在布料上弄到的。 DateList是涉及RecyclerView片段: callToServer(带有假输入)首先清除键列表,然后填充它。几毫秒后,将调用callToServer(具有true输入)来再次清除keyList,并填充新
日安。 我试着让我的电脑检测我的JDK,我想安装SDK管理器,对于eclipse,我的目标是运行一个虚拟的android设备。我已经安装了JDK,并设置了JAVA_HOME路径。下面是路径的一些片段。我目前正在运行Windows1064bit,没有找到任何链接到其他要做的事情。我已经找了一段时间了。 CMD错误消息 如果有人知道我做错了什么,请告诉我。
运行颤振医生给我“cmdline-tools组件丢失”错误,尽管我在Android Studio安装了Android软件开发工具包命令行工具,但我也更新了它,确信它是最新版本。我已经寻找了几天的解决方案,我在任何地方都能找到的唯一答案是“只需在Android Studio软件开发工具包管理器中安装软件开发工具包命令行工具!”我显然已经这样做了,但它仍然不起作用。 下面的图片来指定 颤振医生错误 显
我正在使用JUnit进行练习,这是我要测试的简单方法 无论如何,运行此测试将导致失败... 编辑:ok刚刚检查了一些“奇怪”的东西,这段代码实际上给了我一个例外: 不管怎么说,这一个: 给了我 这就是测试失败的原因。那么...如何在JUnit中测试这种行为呢?