You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RecyclerView仅显示文本不显示图片问题求助

解决RecyclerView中ImageView不显示的问题

嘿,我很快就发现了导致图片不显示的两个关键问题,咱们一步步来解决:

问题1:tools:srcCompat仅用于预览,运行时不生效

你在布局里给ImageView用了tools:srcCompat="@mipmap/ic_launcher",这个属性只在Android Studio的布局预览里生效,App实际运行时不会加载这个资源,所以ImageView是空的,自然没有预留空间。

问题2:Adapter中未设置ImageView的实际资源

就算布局里设置了正确的src,你的MainAdapter也完全没有对ImageView做任何操作,这也是图片不显示的核心原因之一。


解决方案一:直接在布局中设置固定图片资源

修改你的video_row.xml里的ImageView,把tools:srcCompat换成android:srcCompat(或者android:src),并指定Android内置图标,比如:

<ImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@color/colorAccent"
    android:contentDescription="avatar image"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:srcCompat="@android:drawable/ic_menu_camera" /> <!-- 替换为实际生效的属性 -->

解决方案二:在Adapter中动态设置图片(更灵活)

如果你想根据位置设置不同图片,或者后续要动态更换图片,可以在Adapter的onBindViewHolder里添加图片设置逻辑:

首先优化CustomViewHolder,提前引用控件避免重复查找:

class CustomViewHolder(val view: View): RecyclerView.ViewHolder(view) {
    val videoImageView = view.findViewById<ImageView>(R.id.imageView)
    val videoTitleTextView = view.findViewById<TextView>(R.id.videoTitleTextView)
}

然后在onBindViewHolder中设置图片:

override fun onBindViewHolder(holder: CustomViewHolder, position: Int) {
    holder.videoTitleTextView.text = vidTitles[position]
    // 设置Android内置图标,可根据position切换不同资源
    holder.videoImageView.setImageResource(android.R.drawable.ic_menu_gallery)
}

额外优化:确保ImageView有足够显示空间

如果用wrap_content还是没显示,可能是图标本身太小或者约束问题,可以给ImageView设置固定宽高,比如:

android:layout_width="64dp"
android:layout_height="64dp"

这样调整后,你的RecyclerView单元格应该就能同时正常显示图片和文本啦!

内容的提问来源于stack exchange,提问作者pokumars

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:18:16