【问题标题】:cursoradapter bindview - Need to use AsyncTask again for faster processing?cursoradapter bindview - 需要再次使用 AsyncTask 以加快处理速度?
【发布时间】:2014-08-25 19:09:58
【问题描述】:

我已经在我的 Android 应用程序中实现了 CursorAdapter,方法是在我自己的类中扩展它并使用同一个类中的 newView 和 bindView 方法。 以下是在向用户显示数据之前我需要做的事情列表 -

1) 在 CursorLoader 返回的游标中检索图像 url(存储在数据库中) 2)使用url从sd卡/内存中获取实际图像 3) 将包含 ImageView 的 gridview 的 column1 与从 url 检索到的缩略图图像联系起来

现在,在这里,我在 newView 方法中为 GridView 生成 UI 元素,同时在 bindView 方法中将它们与图像绑定。但问题是,图像加载非常缓慢,而且直到时间都没有显示任何图像,所有图像都没有被获取和绑定。因此,即使 UI 没有无响应,也不会长时间显示任何内容。

我们是否需要在 bindView 中使用 AsyncTask,以便在 AsyncTask 中而不是直接在 bindView 中编织线程并将图像绑定到 ImageView??

从 bindView 中为 gridview 加载图像的正确方法是什么?

外部代码链接 - http://www.megafileupload.com/en/file/560756/GeneralSummaryFragment-java.html

【问题讨论】:

标签: android android-gridview android-cursoradapter android-cursorloader


【解决方案1】:

AsyncTask 是一种很好的方法,谷歌也提倡 Processing Bitmaps off the UI thread.

【讨论】:

  • 使用 AsyncTask 可以让我一次加载图像,而不必等待所有图像一次加载。但问题是,在我的 gridview 上,屏幕上只显示了第 4 个项目(考虑到可用空间),并且仍然有第 5 个项目,它应该基本上是空白的,除非用户滚动到该项目。但是,第 5 项,即使不在屏幕上,最初似乎也与第 1 项绑定。然后当用户实际滚动到该项目时,图像从第 1 个图像变为第 5 个项目,这看起来很奇怪。任何有关如何解决的帮助将不胜感激。
  • 还发现根据光标行数总共有5个网格行,而屏幕上只显示第一个4个。即使这样,对于第 5 个元素,光标也会重置为零,并且 newView 和 bindView 被第 5 次调用,然后它将第 0 个元素的值设置为第 5 个元素,这就是我看到数据和图像闪烁问题的原因。
  • @mkar.ghaisas 请问您找到问题的答案了吗
猜你喜欢
  • 2012-08-26
  • 2013-08-19
  • 2018-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多