你们能帮我做这个吗
这是我添加片段的代码
mRecyclerView.addOnItemTouchListener(
new RecyclerItemClickListener(getActivity(), new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
if (!IsScrolling) {
Fragment fragment = new ProductInfoFragment();
Bundle bundle = new Bundle();
bundle.putString("prodID", mItems.get(position).getproductID());
bundle.putString("catName", catName);
fragment.setArguments(bundle);
FragmentManager fragmentManager = getActivity().getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fragmentTransaction.add(R.id.fragmentContainer, fragment, "ProuctInfoFragment");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
mItems.clear();
}
}
})
);
但当我从添加的片段中按back时,我出现了这个错误,我的应用程序崩溃了。
FATAL EXCEPTION: main Process: com.tiseno.poplook, PID: 2617
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 5(offset:5).state:9
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4401)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4359)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1961)
at android.support.v7.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:438)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1333)
at android.support.v7.widget.LinearLayoutManager.scrollBy(LinearLayoutManager.java:1161)
at android.support.v7.widget.LinearLayoutManager.scrollVerticallyBy(LinearLayoutManager.java:1018)
at android.support.v7.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:3807)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:603)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:5514)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
为什么会这样?请帮忙。我正在使用两个片段。产品列表fragent和产品详细信息片段
问题可能与适配器有关。如果您使用的是 setHasStableIds(true);
在适配器构造函数中,您需要确保使用的是稳定的 id。
确保您在适配器中正确覆盖了getItemId
。它应该是:
@Override
public long getItemId(int position) {
return yourList == null ? 0 : yourList.get(position).getId();
}
而不是:
@Override
public long getItemId(int position) {
return position;
}
我遇到了同样的问题,当您清除列表时,您必须通知适配器,因为每次您更改列表并且适配器包含旧列表时,您必须在清除列表后通知适配器,然后再在适配器中添加新项目
>
在启动类时创建数据成员实例
ArrayList<HashMap<String,String>> yourarraylist =new ArrayList<>();
Youradaptername instance;
清除列表后,通知适配器
yourarraylist .clear();
instance.notifyDataSetChanged();
您正在调用 mItems.clear();
而不通知 RecyclerView
的适配器数据中的某些内容已更改。每次更改适配器使用的数据后,您需要调用 adapter.notifyDataSetChanged();
请参阅此内容。
我们的 QA 检测到一个错误:发生了以下与 RecyclerView 相关的崩溃:' Java . lang . indexoutofboundsexception:检测到不一致。无效的项目位置2(偏移量:2)。状态:3 一个残酷的解决方法可能是在异常发生时捕获它,并从头开始重新创建RecycleverView实例,以避免处于损坏状态。 但是,如果可能的话,我想更好地理解这个问题(也许从根源上修复
我已经开始在Crashlytics上报道这次坠机事件。我不知道如何复制它,但它似乎都是内部的代码。我认为这来自于我的<代码>回收视图</代码>它从未真正改变过。用户可以刷新它,但随后会替换所有项,并调用。
我们的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,并填充新
我正在尝试删除我的< code > recycle view 中的第一个项目。使用livedata和diffutil监控对列表的更改。仅当删除< code > recycle view 中的第一个项目(第0个索引)时,才会发生崩溃。这似乎与其他相关问题相似。快速滚动时不会出现此问题,等等。Ot仅在移除第0个位置的项目时发生。项目本身将从数据库中删除。但是应用程序崩溃了。我尝试从< code > r
我在我的应用程序中使用带有的。因为我已经从加载了,并且在后台调用服务之后,尝试通过