`
h416756139
  • 浏览: 365827 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用ViewHolder模式提高效率

 
阅读更多

 

        public View getView(int pos, View convertView, ViewGroup parent){ 

            ViewHolder holder;

            if (convertView == null) { 

                convertView = mInflater.inflate(R.layout.list_item, null); 

                holder.text = (TextView) convertView.findViewById( R.id.text));

                holder.icon = (ImageView) convertView.findViewButId( R.id.icon));

                convertView.setTag(holder); 

                }

            else { 

                holder = (ViewHolder) convertView.getTag(); 

                }

            holder.text.setText(DATA[pos]); 

            holder.icon.setImageBitmap((pos & 1) == 1 ? mIcon1 : mIcon2);

                return convertView;

//                holder = new ViewHolder();

                } 

 

//     ViewHolder 模式, 效率提高 50% 

        static class ViewHolder { 

            TextView text;

            ImageView icon;

            } 

 

//        内存分配 不要创建 Java 对象 在性能敏感的代码里, 尽量避免创建 Java 对象

           测量: 布局: onMeasure() onLayout() 绘图:

           事件处理: dispatchTouchEvent(), onTouchEvent()

          Adapter: getView(), bindView()

          GC, 垃圾回收

          整个程序会暂停 慢 (大约几百个毫秒)

 

分享到:
评论
1 楼 aaaaaaa7a 2011-11-26  
博主,请问后面那段“// 内存分配 不要创建java对象……”的意思是不是指那几个方法会引起垃圾回收从而导致程序暂停一下?

相关推荐

    ListView使用ViewHolder模式提高效率

    "ListView使用ViewHolder模式提高效率"这一主题就是解决这个问题的关键知识点。 ViewHolder模式是Android开发中为了提升ListView性能而设计的一种优化策略。它通过减少findViewById的调用来改善视图的绘制速度。在...

    第四章:ListView使用技巧.md

    使用 ViewHolder 模式提高效率 #### 原理 `ViewHolder` 模式是提高 ListView 效率的关键技术。传统的 `getView()` 方法中每次都会通过 `findViewById()` 实例化控件,这在数据量较大时会导致性能瓶颈。而 `...

    自绘制View,摆脱android固定模块限制【高清视频教程】

    - **复用View**:对于列表、网格等重复显示的数据,可以使用ViewHolder模式提高效率。 - **使用BitmapShader**:处理大图时,可以使用BitmapShader进行局部渲染,降低内存消耗。 本教程的高清视频将详细讲解以上...

    Android list列表滑动显示隐藏toolbar(ListView)

    对于大型列表,考虑使用ViewHolder模式提高效率,避免内存泄漏,同时确保在滚动过程中只更新必要的视图。此外,对于兼容性问题,确保在较低版本的Android系统中也能正常工作,可能需要使用Support Library来实现...

    万能的Adapter和ViewHolder

    ViewHolder模式是为了提高列表滑动时的性能而设计的,避免频繁地查找并创建新的View对象。在`getView()`方法中,首先通过convertView参数检查是否已经创建过该位置的View,如果存在,则直接复用;否则,创建新的View...

    Android ViewHolder的超简洁写法Demo

    ViewHolder模式的核心思想是减少findViewById的调用,提高列表滚动时的性能。通常情况下,我们会在Adapter的getView方法中创建一个新的ViewHolder对象,然后绑定数据。然而,这样的写法可能会导致大量的对象创建,...

    万能listView ViewHolder适配器

    这个“万能的ViewHolder适配器”概念,就是对ViewHolder模式的一种扩展和优化,适用于各种类型的列表数据适配。 ViewHolder设计模式的核心思想是减少findViewById()方法的调用,提升ListView滚动时的性能。当...

    利用ViewHolder优化自定义Adapter的典型写法

    ViewHolder模式的核心思想是减少 findViewById() 方法的调用,因为这个方法在布局复用时会产生较大的性能开销。通过创建一个ViewHolder类,持有UI组件的引用,可以在需要更新视图时快速访问,避免频繁查找视图对象,...

    ViewHolder和Adapter 工具类

    ViewHolder模式是Android UI开发中的一个最佳实践,它通过缓存视图对象的引用,避免了在滚动列表时频繁地查找视图,从而显著提高了列表滚动的流畅性。在创建ViewHolder时,我们通常会创建一个内部静态类,它持有...

    ViewHolder篇1

    4. **缓存数据复用**:ViewHolder不仅保存了视图引用,还可以保存一些与视图关联的数据,比如文字、图片等,这样在显示新数据时可以直接复用这些缓存的数据,进一步提高效率。 然而,在Android 5.0之后,谷歌推出了...

    通用的Viewholder 和adapter

    在`CommAdapter_commonViewHolder`这个示例中,我们可以推测作者提供了一个通用的Adapter实现,可能包含了对ViewHolder模式的支持,适用于多种数据结构的列表展示。这样的通用Adapter可以减少代码重复,提高代码复用...

    抽象的ViewHolder和BaseAdapter

    在Android开发中,高效地处理ListView、RecyclerView等可滚动...通过抽象`BaseAdapter`为`CommonAdapter`,我们可以进一步优化代码结构,提高开发效率。在实际项目中,善用这些技术可以显著提升应用的性能和用户体验。

    listview适配器 ListViewAdapter和ViewHolder代码.rar

    ViewHolder保存了视图项中各个子视图的引用,避免了每次`getView()`调用时都要查找对应的视图,显著提高了效率。实现ViewHolder通常包括以下步骤: 1. 定义一个ViewHolder类,其中包含ListView项中所有子视图的成员...

    ListView的效率提高示例

    1. **ViewHolder模式**:为了减少findViewById()的调用次数,我们应使用ViewHolder模式。ViewHolder是一个内部类,持有每个列表项视图的所有视图引用。这样,在getView()方法中,我们只需要一次findViewById(),然后...

    activeobjects-0.9.15.zip

    今天我们将深度探讨一个名为"android-viewholder-listviews"的开源项目,它旨在简化并清晰化使用ViewHolder模式与ListView的流程。同时,我们也会提及"activeobjects-0.9.15.zip"这个压缩包,尽管其具体用途不在此...

    Android:如何提高UI的速度和效率

    - **ViewHolder模式**:为了进一步提高性能,可以采用ViewHolder模式来存储视图元素的引用。这样,在`getView()`方法中只需初始化一次ViewHolder对象,并将其绑定到`convertView`上,后续操作可以直接访问ViewHolder...

    Android中利用ViewHolder优化自定义Adapter的写法(必看)

    这样,当数据绑定到视图时,可以直接使用已经缓存的视图对象,减少了大量的findViewById()操作,从而提高效率。 下面我们将深入探讨如何在自定义Adapter中使用ViewHolder来优化性能。 首先,定义一个ViewHolder类...

    打造万能的ListView适配器(ViewHolder+CommonAdapter)

    这种`ViewHolder`结合`CommonAdapter`的方法,让开发者可以更专注于数据和视图的绑定,而不是重复适配器的实现细节,大大提高了开发效率和代码质量。在实际项目中,可以根据需求进一步扩展,如支持头尾视图、动画...

    Android 适配器模式应用及设计原理

    ViewHolder存储了视图的引用,当需要绑定数据时,直接使用ViewHolder中的视图而不是每次都从布局中查找,提高了效率。 6. **适配器模式的优势**: - **灵活性**:适配器模式允许我们使用现有类,无需修改它们就能...

    CommonViewHolder:通用的列表的BaseAdapter以及ViewHolder,极大的简化代码,提高工作效率

    2. **ViewHolder模式**: - ViewHolder通常是一个内部类,持有列表项视图中的各个组件引用。在`getView()`方法中,先检查convertView是否为空,如果不为空,则直接使用,否则新建视图并设置Tag为ViewHolder对象。 ...

Global site tag (gtag.js) - Google Analytics