Android 奇怪的阵列适应行为

Android 奇怪的阵列适应行为,android,android-arrayadapter,Android,Android Arrayadapter,我正在为基于Android的平板电脑编写一个应用程序。虽然我在开发方面已经走了很长的路,但有一个bug我不理解,也无法摆脱。我有一个带有自定义ArrayAdapter的GridView,其中包含一些可下载的项目。此网格中的每个项目都是可单击的相对布局,如下所示: <RelativeLayout> <FrameLayout /> <TextView /> <TextView /> <ProgressBar /> &l

我正在为基于Android的平板电脑编写一个应用程序。虽然我在开发方面已经走了很长的路,但有一个bug我不理解,也无法摆脱。我有一个带有自定义ArrayAdapter的GridView,其中包含一些可下载的项目。此网格中的每个项目都是可单击的相对布局,如下所示:

<RelativeLayout>
  <FrameLayout />
  <TextView />
  <TextView />
  <ProgressBar />   
</RelativeLayout>
这非常有效。下面是点击第三个图标后在现实世界中的样子;这些项目只是占位符,但下载的文件是真实的:

[我无法发布没有足够代表性的图片,因此这里有一个链接]

在同一时间,我可以开始第二次下载,它仍然会工作得很好。我还可以在最后添加元素,它也会起作用。然而,有一个小问题。每当我使用搜索按钮启动新活动并返回此活动时,相同的gridview将如下所示:

<RelativeLayout>
  <FrameLayout />
  <TextView />
  <TextView />
  <ProgressBar />   
</RelativeLayout>
[我无法发布图像,只有一个超链接没有足够的重复,因此这里有一个带有空格的链接]

http://i54.tinypic.com/16kqgxg.png 它仍然在下载正确的元素,只是显示了错误的进度条。下载完成后,杂志仍将显示。另一个不必要的影响是,所有项目,甚至那些正在下载和带有进度条的项目,都设置为可点击,我在开始下载之前禁用它。以下代码略为缩短,但更新适配器并不重要:

List<Magazine> newList = cm.getMyMags(); // Returns a list of current magazines
List<Magazine> oldList = cachedAdapter.mags; // I use List.toArray() method in getView in Adapter.

for (Magazine mag : newList) {
    if (!oldList.contains(mag)) {
        cachedAdapter.add(mag);
    }
}
我知道这不是最有效的方法,但现在我所关心的是让它发挥作用。 我试图更新列表本身并调用notifyDataSetChanged,但结果完全相同。 有人知道是什么导致了这个问题吗

谢谢你抽出时间