Inconsistency detected. Invalid view holder adapter positionk{position=5 id=-1, oldPos=0, pLpos:0 scrap [attachedScrap] tmpDetached no parent}

Viewed 49

Well, i had gone through every portal to know the issue but hadn't worked, Actually it crashed randomly.

Exception is as follows,

Fatal Exception: java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid 
view holder adapter positionkj8{1734d08 position=5 id=-1, oldPos=0, pLpos:0 scrap [attachedScrap] tmpDetached no parent} androidx.recyclerview.widget.RecyclerView{5662a59 VFED..... ......ID 0,0-0,0 #7f0b0f5c app:id/signUpFormRecyclerView}, adapter:k06@73d561e, layout:androidx.recyclerview.widget.LinearLayoutManager@e8efeff, context:android.view.ContextThemeWrapper@2562378
   at androidx.recyclerview.widget.RecyclerView$Recycler.validateViewHolderForOffsetPosition(RecyclerView.java:6156)
   at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6339)
   at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6300)
   at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6296)
   at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2330)
   at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1631)
   at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1591)
   at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:668)
   at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4309)
   at androidx.recyclerview.widget.RecyclerView.onMeasure(RecyclerView.java:3686)
   at android.view.View.measure(View.java:27131)
   at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:735)
   at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:481)
   at android.view.View.measure(View.java:27131)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7951)
   at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:760)
   at com.google.android.material.appbar.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:99)
   at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:2003)
   at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:831)
   at android.view.View.measure(View.java:27131)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7951)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
   at com.Custom.consumer.ui.view.CustomFrameLayout.onMeasure(CustomFrameLayout.java:69)
   at android.view.View.measure(View.java:27131)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7951)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
   at android.view.View.measure(View.java:27131)
   at androidx.constraintlayout.widget.ConstraintLayout$Measurer.measure(ConstraintLayout.java:811)
   at androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.measure(BasicMeasure.java:466)
   at androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.measureChildren(BasicMeasure.java:134)
   at androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.solverMeasure(BasicMeasure.java:278)
   at androidx.constraintlayout.core.widgets.ConstraintWidgetContainer.measure(ConstraintWidgetContainer.java:120)
   at androidx.constraintlayout.widget.ConstraintLayout.resolveSystem(ConstraintLayout.java:1594)
   at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1708)
   at android.view.View.measure(View.java:27131)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7951)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
   at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:145)
   at android.view.View.measure(View.java:27131)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7951)
   at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
   at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
   at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
   at android.view.View.measure(View.java:27131)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7951)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
   at android.view.View.measure(View.java:27131)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7951)
   at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
   at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
   at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
   at android.view.View.measure(View.java:27131)
   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7951)
   at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
   at com.android.internal.policy.DecorView.onMeasure(DecorView.java:1175)
   at android.view.View.measure(View.java:27131)
   at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:4187)
   at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:2936)
   at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3204)
   at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2618)
   at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9971)
   at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1010)
   at android.view.Choreographer.doCallbacks(Choreographer.java:809)
   at android.view.Choreographer.doFrame(Choreographer.java:744)
   at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:995)
   at android.os.Handler.handleCallback(Handler.java:938)
   at android.os.Handler.dispatchMessage(Handler.java:99)
   at android.os.Looper.loop(Looper.java:246)
   at android.app.ActivityThread.main(ActivityThread.java:8633)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)

code: Fragment code is as follows,

class OnBoardingFragment : BaseFragment() {

private val onBoardingConfig: OnBoardingFragmentInitConfig by lazy {
    requireArguments().getParcelable(Keys.INIT_CONFIG)!!
}

private val adapterItemList: ArrayList<EditViewType> = ArrayList()

private val viewViewModel: OnBoardingViewModel by fragmentViewModelBuilder {
    OnBoardingViewModel(
        onBoardingConfig,
        adapterItemList,
        onBoardingReferralPresenter
    )
}

private val onBoardingReferralPresenter: OnBoardingReferralPresenter by lazy {
    OnBoardingReferralPresenter(authNavigatorV2)
}

private val adapter by lazy {
    ProfileAdapter(
        adapterItemList,
        viewViewModel,
        lifecycleScope
    )
}

private lateinit var bindingCollapse: DesignCollapsingtoolbarBinding
private lateinit var binding: DesignSignupOnboardingBinding

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?,
): View {
    bindingCollapse = DesignCollapsingtoolbarBinding.inflate(inflater, container, false)
    return bindingCollapse.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

onBoardingReferralPresenter.setReferralPresenterToViewModelCallBack(viewViewModel) initView()

    if (null == savedInstanceState)
        viewViewModel.startViewModel()
}

private fun initView() {
    setUpViewStub()

    setUpRecyclerView()

    startObservers()
}

private fun setUpViewStub() {
    bindingCollapse.commonHeaderViewstub.viewStub?.let {
        it.layoutResource = R.layout.design_signup_onboarding
        it.setOnInflateListener { _, inflated ->
            val stubBinding = DataBindingUtil.bind<DesignSignupOnboardingBinding>(inflated)

            if (null == stubBinding) {
                requireActivity().onBackPressed()
                return@setOnInflateListener
            }

            binding = stubBinding
        }

        it.inflate()
    }
}

private fun startObservers() {

    viewViewModel.loadAdapterItemList.observe(viewLifecycleOwner) {
        adapter.notifyDataSetChanged()
    }

    viewViewModel.notifyPosition.observe(viewLifecycleOwner) {
        adapter.notifyItemChanged(it)
    }
}

private fun setUpRecyclerView() {

    with(binding.signUpFormRecyclerView) {
        layoutManager = LinearLayoutManagerWrapper(context, LinearLayoutManager.VERTICAL, false)
        itemAnimator = null
        adapter = this@OnBoardingFragment.adapter
    }
}

companion object {
    private const val SOURCE = "source"
    private const val DIALOG_ALERT = 9899
    const val SCREEN_NAME = GaScreen.ON_BOARDING_PAGE

    fun getInstance(
        onBoardingInitModel: OnBoardingFragmentInitConfig?,
        source: Int,
    ): OnBoardingFragment {
        val fragment = OnBoardingFragment()
        val bundle = Bundle()
        bundle.putInt(SOURCE, source)

        bundle.putParcelable(Keys.INIT_CONFIG, onBoardingInitModel)
        fragment.arguments = bundle
        return fragment
    }
}

}

xml code is as follows,

design_collapsingtoolbar.xml

<?xml version="1.0" encoding="utf-8"?>

<CusotmFrameLayout
    android:id="@+id/commonHeaderRoot"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.coordinatorlayout.widget.CoordinatorLayout
        android:id="@+id/commonHeaderCoordinator"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/transparent">

        <include
            android:id="@+id/comonHeaderCollapsingToolbar"
            layout="@layout/collapsing_toolbar" />

        <ViewStub
            android:id="@+id/commonHeaderViewstub"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:inflatedId="@+id/commonHeaderInflatedView"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    </androidx.coordinatorlayout.widget.CoordinatorLayout>

    <CustomTextView
        android:id="@+id/commonHeaderRightItem"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="end"/>

</CusotmFrameLayout>

design_signup_onboarding.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:theme="@style/AppTheme.MaterialComponents">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/signUpFormRecyclerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_above="@+id/signupCreateAccount" />

    <CustomButtonView
        android:id="@+id/signupCreateAccount"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/signupTermsCondition"
        tools:text="Create Account" />

    <com.google.android.material.checkbox.MaterialCheckBox
        android:id="@+id/signupTermsCondition"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" />

</RelativeLayout>
0 Answers
Related