安卓应用崩溃报AppCompatImageView无法转TextView错误求排查
错误根因
核心为类型转换异常:你在HomeVerAdapter的ViewHolder中把rating变量声明为TextView类型,但对应布局home_vertical_item.xml中ID为rating的控件实际是ImageView类型,系统尝试将AppCompatImageView强转为TextView时触发崩溃。
具体不匹配位置
- Adapter侧错误声明:
// ViewHolder中错误将rating定义为TextView TextView name, timing, rating, price;
- 布局侧实际控件:
<!-- id=rating的控件实际为ImageView类型 --> <ImageView android:id="@+id/rating" android:layout_width="70dp" android:layout_height="70dp" android:src="@drawable/ratingbar" .../>
修复方案
根据业务需求选择任意一种即可:
- 若要保留rating为图片控件(展示星星评分图),修改ViewHolder的变量声明:
public class ViewHolder extends RecyclerView.ViewHolder{ ImageView imageView, rating; // 将rating调整为ImageView类型 TextView name, timing, price; public ViewHolder(@NonNull View itemView) { super(itemView); imageView = itemView.findViewById(R.id.ver_img); name = itemView.findViewById(R.id.name); timing= itemView.findViewById(R.id.timing); rating= itemView.findViewById(R.id.rating); price = itemView.findViewById(R.id.price); } }
- 若要保留rating为文本控件(展示分数数值),修改布局中id=rating的控件类型为
TextView,调整对应属性即可。
补充:你布局中rating图片旁已经有一个展示评分数值的无ID TextView,如果你需要使用这个文本,给它添加
android:id="@+id/rating_text"属性,再在ViewHolder中声明对应TextView ratingText变量绑定即可。
内容的提问来源于stack exchange,提问作者Biran Kirui
相关产品推荐
相关产品推荐

