java - 我不断收到错误 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.moviebookingapp2.MovieAdapter$ViewHolder.(MovieAdapter.java:27) 在 com.example.moviebookingapp2.MovieAdapter$ViewHolder.(MovieAdapter.java:27) .example.moviebookingapp2.MovieAdapter.onCreateViewHolder(MovieAdapter.java:46) 在 com.example.moviebookingapp2.MovieAdapter.onCreateViewHolder(MovieAdapter.java:11)
解决方案
将 rowImage 的引用从
TextView rowImage;
至
ImageView rowImage;
推荐阅读
- java - 如何用computeIfAbsent效率实现Map putIfAbsent语义?
- laravel - 如何在路由之前获取一些数据并将其发送到 laravel 中的路由?
- flutter - 找不到正确的提供者
在此 EditRetailer 小部件上方 - android - 是否可以在编译开始之前知道 LOCAL_SRC_FILES 的值?
- python - DataFrame.info() 与 DataFrame.Series.describe() 不同
- swift - Xcode11,TableView 单元格选择样式不起作用
- angular - 无法绑定到“rangePicker”,因为它不是“mat-date-range-input”的已知属性
- azure-storage - Microsoft.Azure.Storage.Blob v11.1.7 在创建 Queueclient 时抛出异常
- javascript - ngBootstrap typeahead 对象作为输入值
- javascript - 复选框按类型过滤 - ReactJS