我有一个派生自android.widget.Gallery的类和一个派生自BaseAdapter的类,它有createBitmap覆盖。该图库将显示从Internet下载的一堆图像,但由于用户可能选择不监视所有图像,因此我仅在必要时(即,当它由Gallery显示时)下载每个图像。因此,在第一次调用时,createBitmap会返回默认的“下载图像”图标,并会安排下载正确的图像。图像准备就绪后,我的活动会收到通知。但我不知道如何强制刷新当前可见的图库对象(尽管它足以将其滚出视图并返回到它以查看下载的图像)。 notifyDataSetChanged()没有任何快乐......
有什么想法吗?
答案 0 :(得分:1)
据说,当您的活动得到通知时,它会知道该项目的位置或某种标识符。您应该能够检索视图并将位图设置为它(这将刷新特定视图。
识别给定标识符的视图的方法是使用setTag函数将标识符附加到视图。然后,您可以遍历Gallery子项并查找视图:
for(int i=0 ; i<mParent.getChildCount();i++){
View view = mParent.getChildAt(i);
if(view!=null && view.getTag().equals(yourIdentifier)){
return view;
}
}
循环应该很快,因为AdapterViews只保留有限数量的视图并回收它们。