Project vlayout is a powerfull LayoutManager extension for RecyclerView, it provides a group of layouts for RecyclerView. Make it able to handle a complicate situation when grid, list and other layouts in the same recyclerview.
--------- beginning of crash
06-14 17:15:53.110 8956 8956 E AndroidRuntime: FATAL EXCEPTION: main
06-14 17:15:53.110 8956 8956 E AndroidRuntime: Process: com.alibaba.android.vlayout.example, PID: 8956
06-14 17:15:53.110 8956 8956 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.ViewParent android.view.View.getParent()' on a null object reference
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.support.v7.widget.RecyclerView.getChildViewHolder(RecyclerView.java:4176)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.support.v7.widget.RecyclerView.repositionShadowingViews(RecyclerView.java:4865)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.support.v7.widget.RecyclerView.scrollByInternal(RecyclerView.java:1684)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.support.v7.widget.RecyclerView.onTouchEvent(RecyclerView.java:2837)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.View.dispatchTouchEvent(View.java:11734)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2957)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2636)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2963)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2650)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2963)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2650)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2963)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2650)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2963)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2650)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2963)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2650)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:448)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1828)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.app.Activity.dispatchTouchEvent(Activity.java:3356)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:410)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.View.dispatchPointerEvent(View.java:11975)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4871)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4682)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4213)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4266)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4232)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4359)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4240)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4416)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4213)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4266)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4232)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4240)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4213)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6780)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6752)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6713)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6888)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:253)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:214)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:6856)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:6911)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1029)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.Choreographer.doCallbacks(Choreographer.java:841)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.Choreographer.doFrame(Choreographer.java:766)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1015)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:793)
06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:98)
06-14 17:15:53.111 8956 8956 E AndroidRuntime: at android.os.Looper.loop(Looper.java:176)
06-14 17:15:53.111 8956 8956 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6701)
06-14 17:15:53.111 8956 8956 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
06-14 17:15:53.111 8956 8956 E AndroidRuntime: at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:249)
06-14 17:15:53.111 8956 8956 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)
--------- beginning of crash 06-14 17:15:53.110 8956 8956 E AndroidRuntime: FATAL EXCEPTION: main 06-14 17:15:53.110 8956 8956 E AndroidRuntime: Process: com.alibaba.android.vlayout.example, PID: 8956 06-14 17:15:53.110 8956 8956 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.ViewParent android.view.View.getParent()' on a null object reference 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.support.v7.widget.RecyclerView.getChildViewHolder(RecyclerView.java:4176) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.support.v7.widget.RecyclerView.repositionShadowingViews(RecyclerView.java:4865) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.support.v7.widget.RecyclerView.scrollByInternal(RecyclerView.java:1684) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.support.v7.widget.RecyclerView.onTouchEvent(RecyclerView.java:2837) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.View.dispatchTouchEvent(View.java:11734) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2957) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2636) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2963) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2650) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2963) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2650) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2963) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2650) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2963) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2650) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2963) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2650) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:448) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1828) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.app.Activity.dispatchTouchEvent(Activity.java:3356) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:410) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.View.dispatchPointerEvent(View.java:11975) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4871) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4682) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4213) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4266) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4232) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4359) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4240) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4416) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4213) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4266) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4232) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4240) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4213) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6780) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6752) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6713) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6888) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:253) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:214) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:6856) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:6911) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1029) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.Choreographer.doCallbacks(Choreographer.java:841) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.Choreographer.doFrame(Choreographer.java:766) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1015) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:793) 06-14 17:15:53.110 8956 8956 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:98) 06-14 17:15:53.111 8956 8956 E AndroidRuntime: at android.os.Looper.loop(Looper.java:176) 06-14 17:15:53.111 8956 8956 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6701) 06-14 17:15:53.111 8956 8956 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 06-14 17:15:53.111 8956 8956 E AndroidRuntime: at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:249) 06-14 17:15:53.111 8956 8956 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)