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

集成含图片URL的JSON后ListView显示为空,适配器已加载数据求助

解决ListView有数据但不显示的问题

这种适配器已加载数据但ListView空显示的坑我之前踩过好几次,咱们从几个常见方向排查:

1. 先排查布局相关的问题

  • ListView的高度设置:如果你的ListView嵌套在ScrollView里,默认会被挤压成0高度,这时候要么把ListView移出ScrollView,要么改用NestedScrollView,同时给ListView加上android:nestedScrollingEnabled="true"属性;另外如果ListView的高度设为wrap_content,有时候数据加载后UI没重新测量,也可能导致显示异常,试试改成match_parent或者固定高度。
  • Item布局的根视图:检查你的列表Item布局,根布局是不是设置了match_parent的宽度?有没有给根布局设置minHeight?如果Item里的控件都是自适应高度,可能会导致Item显示为0高度,看起来就像空列表。

2. 适配器的刷新逻辑要到位

调试时看到适配器有数据,但你有没有在主线程调用adapter.notifyDataSetChanged()?比如在网络请求回调(比如AsyncTask的onPostExecute,或者Retrofit的回调)里,把数据赋值给适配器后,必须调用这个方法通知UI更新。如果是在子线程调用的话,UI是不会刷新的,这时候要用runOnUiThread(() -> adapter.notifyDataSetChanged())来确保在主线程执行。

3. 绑定适配器的细节不能错

  • 确认代码里有没有调用listView.setAdapter(yourAdapter)?有没有可能在后续代码里又给ListView设置了空的适配器?
  • 检查布局里的ListView ID和代码中findViewById的ID是否完全一致,别因为拼写错误导致绑定失败。

4. 图片加载的潜在问题

因为你的数据包含图片URL,有可能是图片加载失败导致整个Item布局异常:

  • 先给Item里的ImageView换成一张本地测试图(比如android:src="@mipmap/ic_launcher"),看看Item能不能显示。如果能显示,那就是图片加载的问题:
    • 检查有没有在Manifest里加网络权限:<uses-permission android:name="android.permission.INTERNET"/>
    • 确认你用的图片加载库(比如Glide、Picasso)有没有正确初始化,URL是否能正常访问(可以把URL复制到浏览器里试试)。

补充建议

如果上面的排查都没解决问题,建议补充以下代码片段:

  • 你的列表适配器(Adapter)代码
  • Activity的布局文件和列表Item的布局文件
  • 网络请求后给适配器赋值的完整逻辑

这样能更精准地定位问题所在~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:12:22