【发布时间】:2015-07-23 14:37:03
【问题描述】:
我有一个recyclerview,它使用arraylist 填充。当我从列表中删除一个项目时,它工作正常,直到最后一个项目被删除。下面是在我的 recyclerview 适配器中找到的代码,它删除了一个项目。
public void removeItem(int position) {
itemsData.remove(position);
notifyItemRemoved(position);
}
下面是崩溃日志。日志不会将我定向到代码中的指定位置。所以我不确定是什么导致了问题。
我做了一些测试并记录了这个位置。如果我将一个项目添加到 arraylist 中,notifyItemInserted 在 recyclerview 中添加的项目的位置为 0。如果我单击添加的项目,则位置为 0,如果我删除该项目,我在位置 0 将其删除,但是在将项目删除为位置 0 时它崩溃了。
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'android.view.ViewGroup$LayoutParams android.view.View.getLayoutParams()' 在 android.support.v7.widget.OrientationHelper$2.getDecoratedStart(OrientationHelper.java:316) 在 android.support.v7.widget.LinearLayoutManager.findOneVisibleChild(LinearLayoutManager.java:1633) 在 android.support.v7.widget.LinearLayoutManager.findFirstVisibleChildClosestToStart(LinearLayoutManager.java:1453) 在 android.support.v7.widget.LinearLayoutManager.computeScrollOffset(LinearLayoutManager.java:997) 在 android.support.v7.widget.LinearLayoutManager.computeVerticalScrollOffset(LinearLayoutManager.java:969) 在 android.support.v7.widget.RecyclerView.computeVerticalScrollOffset(RecyclerView.java:1175) 在 android.view.View.canScrollVertically(View.java:12835) 在 android.support.v4.view.ViewCompatICS.canScrollVertically(ViewCompatICS.java:35) 在 android.support.v4.view.ViewCompat$ICSViewCompatImpl.canScrollVertically(ViewCompat.java:1136) 在 android.support.v4.view.ViewCompat.canScrollVertically(ViewCompat.java:1528) 在 android.support.v7.widget.RecyclerView$LayoutManager.onInitializeAccessibilityEvent(RecyclerView.java:6594) 在 android.support.v7.widget.RecyclerView$LayoutManager.onInitializeAccessibilityEvent(RecyclerView.java:6573) 在 android.support.v7.widget.LinearLayoutManager.onInitializeAccessibilityEvent(LinearLayoutManager.java:204) 在 android.support.v7.widget.RecyclerViewAccessibilityDelegate.onInitializeAccessibilityEvent(RecyclerViewAccessibilityDelegate.java:66) 在 android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl$1.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:228) 在 android.support.v4.view.AccessibilityDelegateCompatJellyBean$1.onInitializeAccessibilityEvent(AccessibilityDelegateCompatJellyBean.java:56) 在 android.view.View.onInitializeAccessibilityEvent(View.java:5439) 在 android.view.View.sendAccessibilityEventUncheckedInternal(View.java:5312) 在 android.view.View$AccessibilityDelegate.sendAccessibilityEventUnchecked(View.java:20823) 在 android.support.v4.view.AccessibilityDelegateCompatIcs.sendAccessibilityEventUnchecked(AccessibilityDelegateCompatIcs.java:117) 在 android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateIcsImpl.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:210) 在 android.support.v4.view.AccessibilityDelegateCompat.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:358) 在 android.support.v4.view.AccessibilityDelegateCompat$AccessibilityDelegateJellyBeanImpl$1.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:255) 在 android.support.v4.view.AccessibilityDelegateCompatJellyBean$1.sendAccessibilityEventUnchecked(AccessibilityDelegateCompatJellyBean.java:82) 在 android.view.View.sendAccessibilityEventUnchecked(View.java:5297) 在 android.view.ViewRootImpl$SendWindowContentChangedAccessibilityEvent.run(ViewRootImpl.java:6934) 在 android.view.ViewRootImpl$SendWindowContentChangedAccessibilityEvent.runOrPost(ViewRootImpl.java:6960) 在 android.view.ViewRootImpl.postSendWindowContentChangedCallback(ViewRootImpl.java:6161) 在 android.view.ViewRootImpl.notifySubtreeAccessibilityStateChanged(ViewRootImpl.java:6274) 在 android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:2772) 在 android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:2772) 在 android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:2772) 在 android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:2772) 在 android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:2772) 在 android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:2772) 在 android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:2772) 在 android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(
任何帮助都非常感谢!
【问题讨论】:
-
您有什么解决办法吗?我在使用
notifyItemRemoved时有同样的问题,但是使用notifyDataSetChanged时没有问题 -
没有。可悲的是我没有:(对不起女士/先生
标签: android null crash android-recyclerview