0

listView (表示されている) の最初の項目を削除しようとするたびに Null ポインター例外が発生する理由を理解するのに助けが必要です。他のすべてのアイテムを削除してもエラーは発生しませんが、最初のアイテムは引き続き失敗します。

コードは次のとおりです。

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)
4

1 に答える 1

0

この行:

ContextualUndoView contextualUndoView = (ContextualUndoView) mDismissView;

ビューを宣言しますが、インスタンス化はしません (つまり、nullまだです)。

次の行で

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

ビューを使用しようとしましたが、まだ null であるため、null ポインターを取得します。

于 2013-08-11T04:44:17.490 に答える