首页 > 解决方案 > 我不断收到错误 java.lang.ClassCastException: androidx.appcompat.widget.AppCompatImageView cannot be cast to android.widget.TextView

问题描述

 <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:srcCompat="@tools:sample/avatars" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Title"
            android:textSize="20sp"
            android:id="@+id/text1"
            android:layout_margin="10dp">

        </TextView>

        <TextView
            android:id="@+id/text2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Description"
            android:textSize="20sp">

        </TextView>

    </LinearLayout>
  </LinearLayout>

这是我的java代码

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

public class MovieAdapter extends RecyclerView.Adapter<MovieAdapter.ViewHolder> {
    Context context;
    String[] movieNameList;
    String[] movieDescriptionList;
    int[] movieImages;


    public static class ViewHolder extends RecyclerView.ViewHolder{
        TextView rowName;
        TextView rowDescription;
        TextView rowImage;

        public ViewHolder(View itemView){
            super(itemView);
            rowName = itemView.findViewById(R.id.text1);
            rowDescription = itemView.findViewById(R.id.text2);
            rowImage = itemView.findViewById(R.id.imageView3);
        }

    }

    public MovieAdapter(Context context,String[] movieNameList,String[] movieDescriptionList,int[] 
     movieImages){
        this.context = context;
        this.movieNameList = movieNameList;
        this.movieDescriptionList = movieDescriptionList;
        this.movieImages = movieImages;
    }



@NonNull
@Override
    public MovieAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.firstpage,parent,false);
        return new ViewHolder(view);

    }

@Override
    public void onBindViewHolder(@NonNull MovieAdapter.ViewHolder holder, int position) {
        holder.rowName.setText(movieNameList[position]);
     }

@Override
    public int getItemCount() {
        return movieNameList.length ;
    }
}

这是我得到的错误: java.lang.ClassCastException: androidx.appcompat.widget.AppCompatImageView 不能在 com.example.movi​​ebookingapp2.MovieAdapter$ViewHolder.(MovieAdapter.java:27) 在 com.example.movi​​ebookingapp2.MovieAdapter$ViewHolder.(MovieAdapter.java:27) .example.movi​​ebookingapp2.MovieAdapter.onCreateViewHolder(MovieAdapter.java:46) 在 com.example.movi​​ebookingapp2.MovieAdapter.onCreateViewHolder(MovieAdapter.java:11)

标签: javaandroid

解决方案


将 rowImage 的引用从

 TextView rowImage;

 ImageView rowImage;  



 

推荐阅读