Java 无法将androidx.cardview.widget.cardview强制转换为androidx.recyclerview.widget.recyclerview

Java 无法将androidx.cardview.widget.cardview强制转换为androidx.recyclerview.widget.recyclerview,java,android,android-recyclerview,Java,Android,Android Recyclerview,我正在做一个项目,但当我编译我的项目并在Android Studio上启动应用程序时,我的应用程序崩溃了 在我的日志错误中 Process: com.passionategeekz.learnC, PID: 5854 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.passionategeekz.learnC/com.passionategeekz.learnC.card}: java.lang.Cla

我正在做一个项目,但当我编译我的项目并在Android Studio上启动应用程序时,我的应用程序崩溃了

在我的日志错误中

Process: com.passionategeekz.learnC, PID: 5854
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.passionategeekz.learnC/com.passionategeekz.learnC.card}: java.lang.ClassCastException: androidx.cardview.widget.CardView cannot be cast to androidx.recyclerview.widget.RecyclerView
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2895)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1616)
    at android.os.Handler.dispatchMessage(Handler.java:106)``
My card.java

  package com.passionategeekz.learnC;

    import android.os.Bundle;

    import androidx.appcompat.app.AppCompatActivity;
    import androidx.recyclerview.widget.DefaultItemAnimator;
    import androidx.recyclerview.widget.LinearLayoutManager;
    import androidx.recyclerview.widget.OrientationHelper;
    import androidx.recyclerview.widget.RecyclerView;

    import java.util.ArrayList;


    public class card extends AppCompatActivity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.card);


            ArrayList<model> list= new ArrayList();
            list.add(new model(model.TEXT_TYPE,"xxx",0));
            list.add(new model(model.IMAGE_TYPE,"xx",R.drawable.wtc));
            list.add(new model(model.AUDIO_TYPE,"xx",R.raw.sound));
            list.add(new model(model.IMAGE_TYPE,"xx",R.drawable.snow));

            MultiViewTypeAdapter adapter = new MultiViewTypeAdapter(list,this);
            LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this,OrientationHelper.VERTICAL,false);

            RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);
            mRecyclerView.setLayoutManager(linearLayoutManager);
            mRecyclerView.setItemAnimator(new DefaultItemAnimator());
            mRecyclerView.setAdapter(adapter);
        }
    }

将cardview更换为此

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="350dp"
    android:layout_height="447dp"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

</androidx.recyclerview.widget.RecyclerView>

问题出在这一行:

RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);
id为“recyclerView”的视图是您试图转换为recyclerView的CardView。在xml中将其类型更改为RecyclerView而不是CardView。

在xml更改中

<androidx.cardview.widget.CardView
    android:id="@+id/recyclerView"
    android:layout_width="350dp"
    android:layout_height="447dp"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

</androidx.cardview.widget.CardView>

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="350dp"
    android:layout_height="447dp"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

</androidx.recyclerview.widget.RecyclerView>


为什么要将id recyclerView用于CardView?看看xml,id为recyclerView的视图不是Recylerview,而是CardView。将其更改为recyclerview。
<androidx.cardview.widget.CardView
    android:id="@+id/recyclerView"
    android:layout_width="350dp"
    android:layout_height="447dp"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

</androidx.cardview.widget.CardView>
<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="350dp"
    android:layout_height="447dp"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

</androidx.recyclerview.widget.RecyclerView>