列表视图项目进度未更新

List View item progress is not updating

我正在使用列表视图来显示多个 pdf 文件。

每个项目都包含一个按钮,单击该按钮该项目的进度条就会变得可见并显示进度(工作正常)。我还提供了一个选项来下载所有项目,方法是点击一个按钮,所有项目的进度都应该是可见的,并且应该显示每个项目的进度。

但是由于我的列表视图一次只在屏幕上显示两个项目,所以我没有转换其他项目的视图对象来获取进度条并更新它们,所以只显示和获取这两个项目进度条更新。当用户滚动列表时,他看到每个项目的进度都是空的,因为我没有转换视图对象来获取该项目的进度条。

如何在渲染列表视图时获取所有转换视图对象。我会将所有这些对象存储在一个列表中,当用户滚动列表时,我将更新相应的项目进度条。或者还有其他方法可以实现吗?

convertView因为回收不能全部保留。 例如,当您滚动列表时,您的第一个视图将在列表中的某处重复使用(可能在第 4 个位置,谁知道呢,取决于屏幕上可见的数量)

您的下载状态应该是数据 bean 的一部分,而不是您的视图。 每次在您的适配器中调用您的 getView 函数时,您应该 "plug" 将正确的信息和侦听器添加到您的进度条中(确保下载第一个元素的进度不会使第四个元素的进度条移动)

是的,您应该保存所有列表项的进度信息并在适配器的 getView 方法中使用它。不要忘记 - 您应该为已开始下载的元素显示进度条,并为没有下载的元素隐藏进度条。

您不应直接使用查看器来更改列表项的状态。

相反,将 boolean loading 属性添加到您的数据 class。将视图绑定到数据时,选中此属性以显示或隐藏进度条。

当您下载列表中的一项或多项时,更新您的基础数据,然后调用 myAdapter.notifyDataSetChanged() 刷新 UI。

您必须在数组对象中维护进度条的数据,并且在列表适配器中您必须将相关值分配给列表适配器中的相关项目,您可以在对象数组中维护该数据将包含每个列表项的所有必要信息。