2015-04-30 40 views
0

我正在使用ArrayAdapter以及ListView来显示一些图像(我使用Picasso来帮助进行图像处理)。图像最初从本地设备上的状态加载。适配器对图像具有ids,其中适配器的getView()方法用于获取路径。如果图像在本地不可用,则本地状态将返回图像的URL。如果URL已经过期,我需要从后端获取。当后端数据发生变化时刷新ArrayAdapter,但项目值不是

如果URL没有过期,我没有问题,因为我可以直接提供毕加索或URL的路径,毕加索将为我处理所有事情。但是,当我需要从后端获取URL时,我需要异步执行此操作。获取URL后,我试着做以下,但它似乎没有工作(在这种情况下使用毕加索与URL我getView()意志):

 adapter.remove(id); 
     adapter.add(id); 

notifyDataSetChanged()似乎并没有做太多为好。

处理这种情况的最佳方法是什么?除了我想用适配器做什么以外,还有别的方法吗?我希望尽可能延迟从后端获取URL,直到用户需要查看图像为止。

更新:现在,我将id替换为temp_id,当URL过期时,然后再次添加正确的id,此时我具有有效的URL以便视图得到刷新。

回答

0

你有没有尝试用myArray.clear()清理图像URL的ArrayList?不太确定如果我得到您的问题或您的代码如何。

但我有这样的问题。对我有用的是完全重新安装适配器。

link应该帮助。

+0

我担心保持一个指向数据的指针,因为基类可能会在某个时刻复制Arraylist(尽管此时代码不会执行此操作)。如果我试图保留自己的副本,我将不得不重写所有添加/删除方法,以确保我的副本同步(想要尝试并避免这种混乱)。将尝试clear()方法,但是IIRC,我确实尝试了这一点,但它没有奏效。 – wislo

相关问题