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