Android – java.lang.IndexOutOfBoundsException:无效的项目位置0(0)。 商品数量:0

我在我的日志中得到这个exception –

java.lang.IndexOutOfBoundsException: Invalid item position 0(0). Item count:0 at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4622) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4617) at com.jivemap.app.CustomizedViews.MyLinearLayoutManager.measureScrapChild(MyLinearLayoutManager.java:66) at com.jivemap.app.CustomizedViews.MyLinearLayoutManager.onMeasure(MyLinearLayoutManager.java:30) at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:2614) at android.view.View.measure(View.java:15318) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4816) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1413) at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1061) at android.widget.LinearLayout.onMeasure(LinearLayout.java:599) at android.view.View.measure(View.java:15318) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4816) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1413) at android.widget.LinearLayout.measureVertical(LinearLayout.java:704) at android.widget.LinearLayout.onMeasure(LinearLayout.java:597) at android.view.View.measure(View.java:15318) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4816) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1413) at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1061) at android.widget.LinearLayout.onMeasure(LinearLayout.java:599) at android.view.View.measure(View.java:15318) at android.widget.ListView.setupChild(ListView.java:1849) at android.widget.ListView.makeAndAddView(ListView.java:1764) at android.widget.ListView.fillSpecific(ListView.java:1320) at android.widget.ListView.layoutChildren(ListView.java:1635) at android.widget.AbsListView.onLayout(AbsListView.java:2141) at android.view.View.layout(View.java:13874) at android.view.ViewGroup.layout(ViewGroup.java:4364) at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:596) at android.view.View.layout(View.java:13874) at android.view.ViewGroup.layout(ViewGroup.java:4364) at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1695) at android.view.View.layout(View.java:13874) at android.view.ViewGroup.layout(ViewGroup.java:4364) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1672) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1530) at android.widget.LinearLayout.onLayout(LinearLayout.java:1443) at android.view.View.layout(View.java:13874) at android.view.ViewGroup.layout(ViewGroup.java:4364) at android.widget.FrameLayout.onLayout(FrameLayout.java:448) at android.view.View.layout(View.java:13874) at android.view.ViewGroup.layout(ViewGroup.java:4364) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1672) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1530) at android.widget.LinearLayout.onLayout(LinearLayout.java:1443) at android.view.View.layout(View.java:13874) at android.view.ViewGroup.layout(ViewGroup.java:4364) at android.widget.FrameLayout.onLayout(FrameLayout.java:448) at android.view.View.layout(View.java:13874) at android.view.ViewGroup.layout(ViewGroup.java:4364) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1672) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1530) at android.widget.LinearLayout.onLayout(LinearLayout.java:1443) at android.view.View.layout(View.java:13874) at android.view.ViewGroup.layout(ViewGroup.java:4364) at android.widget.FrameLayout.onLayout(FrameLayout.java:448) at android.view.View.layout(View.java:13874) at android.view.ViewGroup.layout(ViewGroup.java:4364) at android.widget.FrameLayout.onLayout(FrameLayout.java:448) at android.view.View.layout(View.java:13874) at android.view.ViewGroup.layout(ViewGroup.java:4364) at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 

我得到这个错误就行了 –

 View view = recycler.getViewForPosition(position); 

在这里,在这个自定义LinearLayoutManager的方法中 –

  private void measureScrapChild(RecyclerView.Recycler recycler, int position, int widthSpec, int heightSpec, int[] measuredDimension) { View view = recycler.getViewForPosition(position); if (view != null) { RecyclerView.LayoutParams p = (RecyclerView.LayoutParams) view.getLayoutParams(); int childWidthSpec = ViewGroup.getChildMeasureSpec(widthSpec, getPaddingLeft() + getPaddingRight(), p.width); int childHeightSpec = ViewGroup.getChildMeasureSpec(heightSpec, getPaddingTop() + getPaddingBottom(), p.height); view.measure(childWidthSpec, childHeightSpec); measuredDimension[0] = view.getMeasuredWidth() + p.leftMargin + p.rightMargin; measuredDimension[1] = view.getMeasuredHeight() + p.bottomMargin + p.topMargin; recycler.recycleView(view); } } 

以前,它运作良好。 我最近将targetSdkVersion更改为23(Marshmallow),以及支持lib的版本。 可能是这个问题是出于同样的原因。

请指导我,如何解决这个问题。

Solutions Collecting From Web of "Android – java.lang.IndexOutOfBoundsException:无效的项目位置0(0)。 商品数量:0"

我遇到了同样的问题,我find了一个更好的解决方法。

调用setAutoMeasureEnabled(false); 在您的自定义LayoutManager的构造函数中。

最后解决:)

更换

编译'com.android.support:recyclerview-v7:23.2.1'

编译'com.android.support:recyclerview-v7:22.+'

工作。

不确定,这是完美的解决scheme或不,但它为我工作。