我觉得你这异步执行完之后,没有告诉adapter去更新图片啊。

解决方案 »

  1.   

    这个是listView的缓存问题,你图片还没有设置好,listView已经滚动了,它只能显示先前缓存的了。
      

  2.   


    那有没有什么解决方法呢?我看了下,主要异步的那个操作步骤调用的GetImagefoldTitmap方法异常耗时,等待时间很长。
      

  3.   

    AsyncTask中可以重写onPostExecute(...)方法,这是异步执行完成后运行在主线程的代码。你在getView中每次都起异步任务,这资源占用的非常大
      

  4.   

    如果你对这个流程不熟悉, 使用用  第三方控件 ImageLoader 。研究其中原理 可以看他们的源代码。
      

  5.   

    google为我们提供了一个标准的图片缓冲机制的 volley,你可以看看这个,能够实现图片的动态加载
      

  6.   

    holder.mediaimage.setImageBitmap(path);这个地方的path是个不确定的Bitmap,而且是个全局对象,这样做不对,因为这个值在异步任务完成时复制,异步任务不一定按照你需要的顺序执行,这里从逻辑上将就有问题了。AsyncTask可以传递一个对象过去,将ImageView传递过去(如果传递的比较多可以封装成一个Object传递),在onPostExecute(Result)中调用ImageView.setImageBitmap(Bitmap),可以解决图片重复和错位的问题,但图片过多可能就会出现OOM了,推荐使用一些优秀的开源库比如六楼说的universal image loader for android  地址 https://github.com/nostra13/Android-Universal-Image-Loader  
      

  7.   

    同意他们说的,图片的缓存是一个非常麻烦的事情,自己做异步处理需要做很多的工作,所以我们可以直接借助开源控件ImageLoader。
      

  8.   

    你好,看到你的问题我就想到了我的问题,我也是呗同样的问题困扰过,最后解决办法就是用框架:ImageLoade,不但能解决图片错位问题,还能有效解决oom内存溢出异常。有问题可以在回复我。