我正在使用列表视图来显示多个pdf文件。
每个项目都包含一个按钮,单击该项目进度条可见并显示进度(正常工作)。我还提供了一个选项,通过点击一个按钮来下载所有项目,所有项目进度应该是可见的,并应显示每个项目的进度。
但由于我的列表视图一次只在屏幕上显示两个项目,我没有其他项目的转换视图对象来获取进度条并更新它们,只显示那两个项目进度条并进行更新。当用户滚动列表时,他会在每个项目上看到一个空的进度,因为我没有转换视图对象来获取该项目的进度条。
如何在渲染列表视图时获取所有转换视图对象。我将所有这些对象存储在列表中,当用户将滚动列表时,我将更新相应的项目进度条。或者还有其他方法可以达到这个目的吗?
答案 0 :(得分:1)
由于回收,您无法保留所有convertView。 例如,当您滚动它时,您的第一个视图将在列表中的某个位置重复使用(可能在第4个位置,谁知道,取决于屏幕上可见的数量)
您的下载状态应该是数据bean的一部分,而不是您的视图。 每次在适配器中调用getView函数时,都应该将正确的信息和监听器“插入”进度条(确保下载第一个元素的进度不会使第四个元素的进度条移动)
答案 1 :(得分:0)
是的,您应该保存有关所有列表项的进度信息,并在适配器的getView
方法中使用它。不要忘记 - 您应该显示已开始下载的元素的进度条,并将其隐藏为元素而不下载。
答案 2 :(得分:0)
您不应直接使用视图来更改列表项的状态。
而是向数据类添加boolean loading
属性。将视图绑定到数据时,请选中此属性以显示或隐藏进度条。
下载列表中的一个或多个项目时,请更新基础数据,然后调用myAdapter.notifyDataSetChanged()
刷新用户界面。
答案 3 :(得分:0)
您必须在数组对象中维护进度条的数据,并且在列表适配器中必须将相关值分配给列表适配器中的相关项,您可以将该数据保存在将包含的对象数组中每个列表项的所有必要信息。