在resume()之后更新自定义列表视图项

时间:2016-09-21 16:30:31

标签: android listview android-asynctask

我有一个custum listview,包含图片,文字,下载按钮和每个项目的进度条。

计划是当我点击下载按钮时,原始不可见的进度条变为可见并开始进展,而下载按钮变为取消按钮。

但现在发生的事情是,当我将应用程序最小化到主页并将其重新打开时,listview会在活动恢复时刷新(即再次调用适配器)。这已经设定了所有已经设定的状态。 进度条变为不可见,下载按钮显示下载图标而不是取消图标,即使下载继续在Asynctask中。

我需要做的是找到一个设置列表项的状态,以使进度条继续前进,按钮变为取消按钮。即即使重新初始化列表视图,也会在Asynctask中继续下载时保留ui状态。

1 个答案:

答案 0 :(得分:0)

我看了你的问题。问题在于您使用的Asynchronous AsyncTask。我可以尝试向您解释问题和建议的解决方案。

如果在活动中启动AsyncTask,则在关闭活动时完成(完成)由于您的活动不再运行,因此无法保证正在运行的AsyncTask也会停止工作并自行完成。这不会发生。

另一个事实是,如前所述,一旦你启动AsyncTask,下次当你再次启动相同的活动时就无法重用它。在您的情况下,它会在您打开活动时始终启动新的AsyncTask。

替代解决方案:您可以使用可以在后台运行的服务组件(请记住,它不会从您的应用程序创建单独的线程,它在应用程序线程上运行)意味着它没有UI并且可以运行即使您的活动或应用程序不在用户面前。您可以将下载逻辑放在其中并与正在运行的活动绑定。

关于适配器中UI的状态,您可以通过在活动和正在运行的服务之间进行通信来管理。

这是一种可以使用它的简单方法。

希望这会有所帮助!

由于 Bhavdip