代码之家  ›  专栏  ›  技术社区  ›  codeScriber

检查Android列表项(可绘制)是否仍然可见

  •  0
  • codeScriber  · 技术社区  · 14 年前

    假设我得到了一个带有LinearLayout的ImageView和TextView的列表。 现在我使用的是简单的arrayadapter扩展,它将strig[]作为一个双字符串数组的项(每个条目都包含字符串[2],其中第一个字符串是图像的URI,第二个字符串是文本。我重写getview来显示图像和文本,当然是重新输入视图-)。 但是,由于映像加载(即使是从资源加载)可能很慢,所以我在异步任务中进行加载,这意味着我已经加载了一个默认映像,并且我使用了:惊人加载(这是我的方法),它将映像视图和URI作为赌注,一旦映像准备就绪,它就会将其放在映像视图中。

    但是有时,因为它是一个列表,如果图像还没有加载,而我正处于进程的中间,那么在停止加载时它是值得的,这是为了防止我为其加载图像的行不再可见。

    由于视图是循环使用的,所以我无法检查ImageView是否可见,因为它可能可见,但具有不同的可绘制性…有没有办法让我知道,在某一点上,我的行无效,不可见?有没有一个简单的方法或shell,我需要开始使用标志、标签模式和类似的东西来发现我的行不再有效?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Kevin Gaudin    14 年前

    我所做的是基于ListView如何管理它的视图。

    由于listView实际使用的视图集有限,可能通过getView()方法的convertView参数传递给适配器,因此我实现了以下功能:

    • 我有一个LinkedList类成员,在其中存储要加载的URI。这些URI在AsyncTask成员中使用以检索pics。
    • 在getview()中返回item视图之前,我的适配器将item pic的urin放在view.settag(object)中。
    • 当我重用convertview时,在重用其内容之前,我使用view.gettag()获取以前链接到的uri,并从挂起的uri链接列表中删除相应的元素。