`
hanlongljj
  • 浏览: 1019 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

ListView中性能优化中图片加载问题

阅读更多

关于ListView中性能优化中图片加载问题

ListView的性能优化网上很多信息,但是涉及到异步加载图片问题就会出现问题。

 

如果每次都重新inflate一个新的View出来肯定会造成性能损失严重,可能会出现listview滚动是很卡的情况,还会出现内存溢出。每次都添加一个标识,然后设置图片的时候检查这个标识,如果不相符则忽略此次。

 

适配器中的关键代码

 

Java代码  
  1. @Override  
  2. public View getView(int position, View convertView, ViewGroup parent) {  
  3.     ViewHolder viewHolder;  
  4.     if(convertView == null){  
  5.         viewHolder = new ViewHolder();  
  6.         convertView = LayoutInflater.from(context).inflate(R.layout.listview_item, null);  
  7.         viewHolder.imageView = (ImageView)convertView.findViewById(R.id.imageView);  
  8.         viewHolder.textView = (TextView)convertView.findViewById(R.id.textView);  
  9.         convertView.setTag(viewHolder);  
  10.     }  
  11.     viewHolder = (ViewHolder)convertView.getTag();  
  12.       
  13.     viewHolder.textView.setText(stringList.get(0)[0]);  
  14.     final ImageView imageView = viewHolder.imageView;  
  15.     imageView.setImageDrawable(null); //reset default  
  16.     imageView.setTag(position);  
  17.     asyncImageLoader.loadDrawable(stringList.get(0)[1], new AsyncImageLoader.ImageCallback() {  
  18.         @Override  
  19.         public void imageLoaded(Drawable imageDrawable, String imageUrl,int key) {  
  20.             if((Integer)imageView.getTag() != key) return;  //不是当前显示的View,则忽略此次  
  21.             if(imageDrawable != null){  
  22.                 imageView.setImageDrawable(imageDrawable);  
  23.             }  
  24.         }  
  25.     },position);  
  26.     return convertView;  
  27. }  

 

 

Java代码  
  1. static class ViewHolder{  
  2.     TextView textView;  
  3.     ImageView imageView;  
  4. }  

 

异步加载图片的代码

Java代码 
  1. public interface ImageCallback {  
  2.     public void imageLoaded(Drawable imageDrawable, String imageUrl,int key);  
  3. }  
 

 

分享到:
评论

相关推荐

    ListView性能优化之视图缓存

    ListView 的性能优化是一个复杂的问题,需要从多方面入手,包括 Adapter 的优化、视图缓存、数据加载优化等。通过使用 convertView 机制和 ViewHolder 模式,可以大幅度提高 ListView 的性能。同时,我们还需要注意...

    Android开发之listview优化+图片异步加载缓存+避免图片显示闪烁

    本篇将深入探讨如何对ListView进行优化,以及如何实现图片的异步加载和缓存策略,以避免这些问题。 **1. ListView优化** ListView的优化主要涉及以下几个方面: 1.1 **convertView复用机制**:ListView的Adapter...

    listview加载多幅图片

    总之,ListView加载多幅图片涉及到ImageList的使用,图片的加载和存储策略,以及性能优化。通过合理的编程实践,可以创建出流畅且高效的图片展示效果。同时,理解并掌握这些知识点对于开发高质量的UI界面至关重要。

    关于listview item重用导致图片重复加载 图片重新请求

    一种常用的库是“Android-Universal-Image-Loader”,这是一个强大的图片加载、缓存库,能够有效解决ListView中图片重用问题。以下是如何使用这个库来优化图片加载的步骤: 1. **集成库**:首先,需要在项目中引入...

    Listview的异步加载性能优化

    首先,ViewHolder模式是ListView性能优化的基础。这个模式的主要目的是减少对视图的查找和更新操作,通过复用已创建的视图来避免每次滚动时创建新的视图对象。在`getView()`方法中,我们首先检查convertView是否为...

    listview高级部分,性能优化的demo

    1. **ViewHolder模式**:这是ListView性能优化的核心。通过复用已创建的视图,避免频繁的findViewById操作,减少内存分配,提升列表滑动的流畅性。在getView方法中,通过convertView参数检查并重用已存在的视图,而...

    ListView优化及加载图片时内存溢出

    然而,如果不进行适当的优化,ListView可能会导致性能问题,甚至触发内存溢出(OOM)异常,尤其是在加载图片时。本篇将深入探讨ListView的优化策略以及如何避免在加载图片时出现内存溢出。 1. **ListView优化策略**...

    listview的图像加载

    它支持异步加载,有内置的内存和磁盘缓存策略,能有效避免ListView中图片加载的问题。使用xutil加载网络图片,只需简单几步: 1. 引入库:在项目中引入xutil的依赖。 2. 初始化:在Application中初始化xutil,配置...

    ListView异步加载图片

    在实际项目中,还应考虑优化ListView的滚动性能,如使用ViewHolder模式减少视图查找的开销,以及根据ListView的可见区域动态加载或取消加载图片,避免一次性加载过多图片导致内存压力过大。这些技巧与异步加载图片...

    Android ListView性能优化

    因此,对ListView进行性能优化至关重要。本文将详细介绍几个关键的优化策略。 1. 使用ViewHolder模式 ViewHolder模式是ListView优化的核心技巧,它可以避免在滚动时频繁地创建和查找视图对象。通过创建一个...

    listview在可视区域加载网络图片

    7. **结合RecycleView**:尽管ListView是经典的列表控件,但现在更推荐使用RecycleView,因为它提供了更多的自定义选项和性能优化。 8. **使用 Fresco 图片加载库**:Fresco 是 Facebook 开源的一个强大的图片加载...

    android listview从mysql加载数据和图片

    以上就是从MySQL加载数据并在Android ListView中显示的整个流程,涵盖了前后端的交互以及客户端的性能优化。这个过程中需要注意各个环节的协同工作,以实现高效、稳定且用户友好的数据和图片加载体验。

    Android中ListView全面完美的网络图片的异步加载

    然后,我们谈谈**LruCache**(Least Recently Used Cache)在图片加载中的作用。LruCache是Android提供的一个基于最近最少使用原则的内存缓存策略。通过将图片数据存储在内存中,可以快速访问已加载过的图片,减少...

    listview 异步加载网络图片

    10. **总结**:在Android的ListView中实现异步加载网络图片,需要结合异步处理框架、选择合适的图片库、优化缓存策略、合理管理内存,并对ListView进行优化。通过这些手段,可以显著提升应用的性能和用户体验。

    Android Listview异步加载图片

    综上所述,Android ListView中异步加载图片是优化用户体验的关键。通过选择合适的异步加载策略和处理图片错位问题,我们可以确保ListView流畅运行,提供优质的用户体验。同时,利用第三方库可以大大简化代码,提高...

    ListView性能优化系列之一

    这篇博客“ListView性能优化系列之一”着重探讨了如何通过深入理解源码和利用特定工具来提升ListView的性能。 首先,了解ListView的工作原理是优化的基础。ListView采用的是滚动复用机制,即“视图回收”...

    listview优化和异步加载全攻略

    然而,如果不进行适当的优化,ListView可能会遇到性能问题,比如滚动不流畅、内存泄漏等。本攻略将深入探讨ListView的优化策略以及异步加载技术,以确保用户体验的顺畅。 一、ListView的基本优化 1. 使用...

    listview加载网络图片

    在描述中提到,提供的代码资源可以解决大部分开发者遇到的头疼问题,即如何优化ListView的图片加载。通常,直接从网络加载图片会消耗大量的内存和CPU资源,导致应用卡顿,甚至崩溃。为了解决这个问题,开发者需要...

    Listview显示图片优化

    通过以上这些优化方法,可以有效地解决ListView显示图片时可能出现的OOM问题,提高应用的性能和用户体验。在实际开发中,应结合具体项目需求和资源限制,选择最适合的优化策略。同时,持续关注和学习新的优化技术,...

Global site tag (gtag.js) - Google Analytics