@@ -457,7 +457,8 @@ public boolean onTouchEvent(MotionEvent ev) {
                 mActivePointerId = MotionEventCompat.getPointerId(ev, 0);
                 mTouchRemainderY = 0;
 
-                if(mTouchMode != TOUCH_MODE_FLINGING && !mDataChanged && motionPosition >= 0 && getAdapter().isEnabled(motionPosition)){
+                if(mTouchMode != TOUCH_MODE_FLINGING && !mDataChanged && motionPosition >= 0
+                    && mAdapter != null && mAdapter.isEnabled(motionPosition)) {
                 	mTouchMode = TOUCH_MODE_DOWN;
 
                 	mBeginClick = true;
@@ -576,7 +577,7 @@ public boolean onTouchEvent(MotionEvent ev) {
                                             mPendingCheckForTap : mPendingCheckForLongPress);
                                 }
 
-                                if (!mDataChanged && mAdapter.isEnabled(motionPosition)) {
+                                if (!mDataChanged && mAdapter != null && mAdapter.isEnabled(motionPosition)) {
                                     mTouchMode = TOUCH_MODE_TAP;
 
                                     layoutChildren(mDataChanged);
@@ -609,7 +610,7 @@ public void run() {
                                     mTouchMode = TOUCH_MODE_REST;
                                 }
                                 return true;
-                            } else if (!mDataChanged && mAdapter.isEnabled(motionPosition)) {
+                            } else if (!mDataChanged && mAdapter != null && mAdapter.isEnabled(motionPosition)) {
                                 performClick.run();
                             }
                         }