【问题标题】:NPE, Each time I try to delete the first visible item in ListViewNPE,每次我尝试删除 ListView 中的第一个可见项目
【发布时间】:2013-08-11 02:30:19
【问题描述】:

我需要帮助弄清楚为什么每次我尝试删除 listView 中的第一项(可见)时都会出现空指针异常。删除其他所有项目都可以正常工作,没有任何错误,但第一个项目一直失败。

代码如下:

private void deleteCurrentItem() {
        ContextualUndoView contextualUndoView = (ContextualUndoView) mDismissView;
        int position = getAbsListView().getPositionForView(contextualUndoView);


        mDeleteItemCallback.deleteItem(position);

    }

详细代码:http://paste.org/66633

错误日志:

08-10 19:09:22.107: E/AndroidRuntime(973): FATAL EXCEPTION: main
08-10 19:09:22.107: E/AndroidRuntime(973): java.lang.NullPointerException
08-10 19:09:22.107: E/AndroidRuntime(973):  at android.widget.AdapterView.getPositionForView(AdapterView.java:597)
08-10 19:09:22.107: E/AndroidRuntime(973):  at com.haarman.listviewanimations.itemmanipulation.contextualundo.ContextualUndoAdapter$RemoveViewAnimatorListenerAdapter.deleteCurrentItem(ContextualUndoAdapter.java:205)
08-10 19:09:22.107: E/AndroidRuntime(973):  at com.haarman.listviewanimations.itemmanipulation.contextualundo.ContextualUndoAdapter$RemoveViewAnimatorListenerAdapter.onAnimationEnd(ContextualUndoAdapter.java:193)
08-10 19:09:22.107: E/AndroidRuntime(973):  at com.nineoldandroids.animation.ValueAnimator.endAnimation(ValueAnimator.java:1034)
08-10 19:09:22.107: E/AndroidRuntime(973):  at com.nineoldandroids.animation.ValueAnimator.cancel(ValueAnimator.java:968)
08-10 19:09:22.107: E/AndroidRuntime(973):  at com.haarman.listviewanimations.itemmanipulation.contextualundo.ContextualUndoAdapter$RecycleViewListener.onMovedToScrapHeap(ContextualUndoAdapter.java:276)
08-10 19:09:22.107: E/AndroidRuntime(973):  at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:6449)
08-10 19:09:22.107: E/AndroidRuntime(973):  at android.widget.ListView.measureHeightOfChildren(ListView.java:1256)

【问题讨论】:

    标签: android eclipse listview android-listview


    【解决方案1】:

    这一行:

    ContextualUndoView contextualUndoView = (ContextualUndoView) mDismissView;
    

    声明你的视图,但不实例化它(所以它仍然是null)。

    在下一行

    int position = getAbsListView().getPositionForView(contextualUndoView);
    

    你尝试使用你的视图,但它仍然是空的,所以你得到一个空指针。

    【讨论】:

    • 视图 mDismissView 在课程的早期实例化。你可以参考完整代码Here 来查看它是在哪里实例化的。另请记住,此错误仅发生在 listView 上的第一项。
    猜你喜欢
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 2014-12-07
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    相关资源
    最近更新 更多