ListView添加List<Image>后仅显示第一张,其余图片不显示的原因排查
嘿,我来帮你排查下这个ListView只显示第一张图片的问题!这种情况我之前踩过好几次坑,大概率是下面几个常见原因导致的,咱们一个个捋:
Item布局高度设置不合理
如果你给ListView的Item布局设置了固定高度(比如android:layout_height="100dp"),而后面两张图片的尺寸超过了这个高度,就会被截断甚至完全隐藏。赶紧检查下你的Item布局文件,把高度改成wrap_content让它自适应图片大小,或者设置足够容纳图片的高度值。Adapter里的视图复用/实例创建错误
要是你在Adapter的getView方法里犯了这个错:全局只初始化了一个ImageView对象,每次getView都返回它,那所有Item都会显示同一张图(大概率是第一张)。正确的做法是用ViewHolder模式,确保每个Item都有独立的ImageView实例;或者在getView里为每个position对应的Item绑定正确的视图,别偷懒复用同一个实例哦。数据源绑定出了低级错误
先检查Adapter的getCount()方法返回值是不是images.size()?如果返回1,ListView只会渲染第一个Item,后面的图片自然没机会显示。另外,在getView里取图片的时候,是不是写成了images.get(0)而不是images.get(position)?这种手滑的错误很常见,仔细核对下代码!后续图片加载失败
后面两张图片可能本身有问题:比如路径写错了、文件损坏了、没有读取权限,导致加载出来是空白。你可以把后面两张换成一张确定能显示的测试图,看看能不能正常显示;或者在加载图片的逻辑里加个日志,排查下加载失败的原因。ListView的父布局限制了高度
比如ListView的父布局用了wrap_content,但ListView的高度计算出现异常,导致只能显示第一个Item。这种情况下把ListView的高度改成match_parent,或者在ConstraintLayout这类布局里给ListView设置好上下左右的约束,确保它有足够的空间展示所有Item。
内容的提问来源于stack exchange,提问作者derekantrican

