首页 > 解决方案 > 如何避免recyclerview item cast错误

问题描述

努力寻找解决方案来解决我在 viewHolder 中单击 itemView 时遇到的转换错误。

ViewHolder 有一个 constraintLayout 和 3 个 textviews,并为 textviews 实现 onClickListeners,其中 2 个工作正常,但连接到 constraintLayout 的那个会给出异常 onClick->

java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.support.constraint.ConstraintLayout$LayoutParams

在适配器中投射 layoutParams 的正确位置在哪里,或者我应该使用 frameLayout 吗?

java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.support.constraint.ConstraintLayout$LayoutParams
        at android.support.constraint.ConstraintLayout.getTargetWidget(ConstraintLayout.java:1144)
        at android.support.constraint.ConstraintLayout.setChildrenConstraints(ConstraintLayout.java:1038)
        at android.support.constraint.ConstraintLayout.updateHierarchy(ConstraintLayout.java:803)
        at android.support.constraint.ConstraintLayout.onMeasure(ConstraintLayout.java:1561)
        at android.view.View.measure(View.java:21051)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6459)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
        at android.support.v7.widget.CardView.onMeasure(CardView.java:260)
        at android.view.View.measure(View.java:21051)
        at android.support.constraint.ConstraintLayout.internalMeasureChildren(ConstraintLayout.java:1227)
        at android.support.constraint.ConstraintLayout.onMeasure(ConstraintLayout.java:1572)
        at android.view.View.measure(View.java:21051)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6459)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
        at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
        at android.view.View.measure(View.java:21051)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6459)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
        at android.view.View.measure(View.java:21051)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6459)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
        at android.view.View.measure(View.java:21051)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6459)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
        at android.view.View.measure(View.java:21051)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6459)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
        at com.android.internal.policy.DecorView.onMeasure(DecorView.java:849)
        at android.view.View.measure(View.java:21051)
        at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2583)
        at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1642)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1893)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1522)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7098)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:927)
        at android.view.Choreographer.doCallbacks(Choreographer.java:702)
        at android.view.Choreographer.doFrame(Choreographer.java:638)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:913)
        at android.os.Handler.handleCallback(Handler.java:751)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6682)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)

标签: android

解决方案


推荐阅读