ViewHolder vs HolderView

ListView的Adapter有多个ViewHolder的时候导致的ViewHolder类型转换错误! 问题复现 背景是这样的,我用的CursorAdapter,然后重写了getViewTypeCount方法 @Override public int getViewTypeCount() { return TYPE_COUNT; } 我又自己实现了一个getItemViewType方法 public int getItemViewType(Cursor 阅读详情

Adapters and recycling

究其原因,使用ViewHolder和HolderView是为了提高AdapterView的性能。Adapter通过使用AdapterView来循环(调用)View,这些View是AdapterView用来显示内容的。更多的信息请参阅 这儿 。
ViewHolder模式简短解释的参考可以在 这儿查看。

HolderView

HolderView继承自某种View,in the example a GridLayout since that was what the layout was using before being replaced that with a “merge” tag. HolderView存储了所有视图的组件,就像ViewHolder一样来避免(频繁,昂贵的)通过findViewById()进行查找。 但是不像ViewHolder,当子View被请求时,ViewHolder有责任为它处理数据。这使得Adapter更小,更容易理解和维护。典型的getView方法看起来像这样:

@Override
public View getView(int i, View convertView, ViewGroup viewGroup) {
    HolderView holderView;
    // Important to not just null check, but rather to a instanceof
    // since we might get any subclass of view here.
    if (convertView instanceof HolderView) {
        holderView = (HolderView) convertView;
    } else {
        holderView = new HolderView(mContext);
    }
    holderView.bind(new Digit(i));

    return holderView;
}
同时,HolderViewd对象看起来应该像这样:

public class HolderView extends GridLayout {

    private TextView mDigitDigit;
    private String mDigitText;

    public HolderView(Context context, AttributeSet attrs) {
        super(context, attrs);
        View v = LayoutInflater.from(context).inflate(R.layout.list_detail, this);
        mDigitDigit = (TextView) v.findViewById(R.id.list_detail_digit);
        mDigitText = context.getResources().getString(R.string.list_detail_digit);
    }

    public void bind(Digit digit) {
        mDigitDigit.setText(String.format(mDigitText, digit));
    }
}
下面的连接是github上的例子项目,你可以看到两个分支,一个是 ViewHolder,一个是 HolderView。
因此本质上两种方法解决相同的问题,非常的相似。主要的不同就是处理UI的责任从Adapter中移到了View中。


原文连接:http://www.jayway.com/2013/11/06/viewholder-vs-holderview/

参考连接:http://blog.chengyunfeng.com/?p=543


(一)RecycleView 复用机制onCreateView和onBindView调用关系 导语 As we all know-众所周知,RecycleView 在展示数据列表的页面替换Listview的趋势已然出现,现在网络上关于它的资料也是铺天盖地,我就不再介绍如何使用了。但是,我对RecycleView的Adapter还是比较感兴趣的,因为懂得了Adapter,对于RecycleView的扩展及优化会很有帮助。这篇文章,先了解一下 onCreateViewHold... 阅读详情

相关推荐

深入解析Android开发中ViewHolder模式的高效应用

ViewHolder模式在Android开发中是一个常用的优化技巧,它属于视图缓存的范畴。它的出现主要是为了解决在ListView等组件的适配器中频繁调用findViewById所带来的性能问题。通用Adapter是一种高度抽象化的Adapter,它不仅支持多种类型的数据和布局,而且可以与多种视图类型协同工作。它通过定义一个通用的数据绑定接口来适应不同的数据源和视图类型,从而实现一次编写,多处复用的开发模式。

weixin_33205138的博客 1462

阿里实习生笔试复盘:题型拆解与考场时间分配全攻略

在互联网大厂的实习招聘中,笔试环节始终是筛选候选人的重要关口。无论是数据结构、算法与操作系统等基础理论,还是实际工程中的问题排查能力,都决定了能否在有限时间内稳定拿分。本文以2017年阿里春招实习生笔试为样本,还原了试卷结构、客观题陷阱与编程题推导过程,并从时间分配、判题环境、复盘方法等角度给出可复用的应试策略。对于正在准备大厂实习笔试的同学而言,理解出题逻辑比盲目刷题更重要,掌握基础概念与工程取舍,才能真正提升笔试通过率。

weixin_30567225的博客 430

IEC104协议下的文件传输与软件升级的技术细节与操作流程

本文深入探讨IEC104协议下的文件传输过程和软件升级机制,揭示其背后的技术细节和操作流程。

2401_86189088的博客 2526

HolderView vs ViewHolder实例

HolderView 与 ViewHolder做Android的伙伴都不会陌生吧,都是为了提升ListView、gridView等这类View的adapter性能, 把多个属性封装到一个类中,也就是面向对象的思想。 ViewHolder实在adapter中建立一个对象,但是没有做任何的业务逻辑,所有的逻辑还是在adapter的getView中实现,这样就显得 adapter特别臃肿。 Ho...

各研发管理 140

异步fifo的UVM验证(最终最终版)

更新了refmdl以及scb

qq_44674008的博客 2990

uniapp+萤石视频监控实战:解决ezuikit.js真机调试不显示的5个关键步骤

本文针对Uniapp集成萤石视频监控时ezuikit.js在真机调试中黑屏不显示的问题,提供了5个关键解决步骤。核心方案是采用Webview加载独立H5播放页,以规避跨平台环境差异,并详细阐述了资源放置、多端适配、通信处理及系统化排查方法,确保视频流稳定播放。

weixin_29001655的博客 290

Android——ViewHolder的作用与用法

Android——ViewHolder的作用与用法 转载至:https://www.cnblogs.com/wugu-ren/p/6106379.htmlViewHolder通常出现在适配器里,为的是listview滚动的时候快速设置值,而不必每次都重新创建很多对象,从而提升性能。在android开发中Listview是一个很重要的组件,它以列表的...

泊停的博客 4万+

个人信息保护合规审计人员(中级)能力测试试卷

本文是关于个人信息保护合规考试的试题解析,内容涵盖《个人信息保护法》相关规定。试卷包含单选题、多选题、判断题、简答题和案例分析题五种题型,总分100分,考试时间120分钟。试题重点考察个人信息处理的基本原则、敏感个人信息处理要求、合规审计流程、个人信息保护影响评估等内容。通过案例分析题详细解析了人脸识别登录、数据共享、跨境传输等场景下的合规要求。参考答案均严格依据《个人信息保护法》等法律法规,为个人信息处理活动提供了明确的合规指引。

qq_41525079的博客 858

为什么使用 ViewHolder 使用ViewHolder与不使用的区别

ViewHolder通常出现在适配器里,为的是listview滚动的时候快速设置值,而不必每次都重新创建很多对象,从而提升性能。 在android开发中Listview是一个很重要的组件,它以列表的形式根据数据的长自适应展示具体内容,用户可以自由的定义listview每一列的布局,但当listview有大量的数据需要加载的时候,会占据大量内存,影响性能,这时候就需要按需填充并重新使用view来...

jie1175623465的博客 2589

瑞数jsvmp算法还原流程讲解

​ 又是很久没写文章了,今天水一篇文章吧,鉴于之前有看到过别人的文章被警告的案例,所以这篇文章就仅写一下还原瑞数vmp的大概流程吧(仅记录下自己还原的思路)

博客 6608

全球APN信息汇总

全球APN信息,电信APN,移动APN,联通APN,台湾APN,马来西亚APN,俄罗斯APN,日本APN,泰国APN,美国APN,英国APN,法国APN,德国APN,意大利APN,葡萄牙APN,土耳其APN,荷兰APN,丹麦APN,比利时APN,爱尔兰APN,新加坡APN,越南APN,老挝APN,菲律宾APN,印尼APN,泰国APN,柬埔寨APN,巴基斯坦APN,印度APN,奥地利APN,保加利亚APN,捷克APN,立陶宛APN,罗马尼亚APN,挪威APN,希腊APN,匈牙利APN,瑞士APN,乌克兰APN

renkai721的专栏 2796

ViewHolder VS HolderView ?

ViewHolder 模式在 Android 中大家应该都不陌生了,特别是在 ListView 中通过 ViewHolder 来减少 findViewById 的调用和 类型的转换。 而 HolderView 模式是把 ViewHolder 给业务逻辑化,不再仅仅只是保存一些 View, 还要带有业务逻辑。 HolderView 的一个示例如下: 123

枫轻舞云飘散 1133

(十一)随机性与独立性回顾

随机性与独立性回顾

旺旺的碎冰冰~的博客 1018

ListView优化adapter getview的两种方式ViewHolder vs HolderView

一、ViewHolder方式 如果你还没听说过ViewHolder,那么你该去好好看看官方文档了,而不是埋头写代码。 一个ListView的item布局中需要赋值的子元素太多为了避免重复的调用FindViewById方法,我们一般考虑使用ViewHolder方式来实现BaseAdapter。 如下://在外面先定义,ViewHolder静态类 static class ViewHolde

jianghejie123的专栏 2192

广义S变换在MATLAB中的仿真

广义S变换是对信号进行时频分析的一种方法,它基于短时傅里叶变换(Short-Time Fourier Transform,STFT)和小波变换(Wavelet Transform)。广义S变换将信号分解成时频平面上的一系列矩形框,每个框内的数值表示相应时刻和频率下信号的能量。本文将介绍如何使用MATLAB进行广义S变换的仿真,并提供相应的源代码。函数,我们可以方便地计算信号的广义S变换,并获取时频平面上的时域和频域信息。广义S变换在信号处理和相关领域中具有广泛的应用,可以用于分析和处理各种类型的信号。

CodeNexus的博客 1124

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

收藏网站74

http://blog.youkuaiyun.com/iter_zc/article/details/40373881   聊聊高并发(六)实现几种自旋锁(一) http://blog.youkuaiyun.com/jianghejie123/article/details/40393601   ListView优化adapter getview的两种方式ViewHolder vs HolderView ht

chun1234567的专栏 358

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

HolderView 与 ViewHolder 优化App性能

HolderView 与 ViewHolder做Android的伙伴都不会陌生吧,都是为了提升ListView、gridView等这类View的adapter性能, 把多个属性封装到一个类中,也就是面向对象的思想。 ViewHolder实在adapter中建立一个对象,但是没有做任何的业务逻辑,所有的逻辑还是在adapter的getView中实现,这样就显得 adapter特别臃

逍遥飞鹤的专栏 2169

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

viewHolder的作用

viewholder的作用是因为Android有个recycler的反复循环器,viewholder就是借助他来做到循环利用itemview。 例如: 默认加载10个itemview,初始化的时候创建一个viewholder,并把10个itemview加载到内存里面。 接着下滑,加载5-15的item,这个时候,显示的还是只有10个view。 我们只是需要重新填充view的数据,而不需要再...

hacker_crazy的专栏 8976

【Android开发】ViewHolder

ViewHolder通常出现在适配器里,为的是listview滚动的时候快速设置值,而不必每次都重新创建很多对象,从而提升性能 //根据准备好的数据源和子项布局完成ListView效果的一一设置 //做细节处理 class MyAdapter(private val list: List<Msg>, private val ctx: Context) : BaseAdapter() { //获取数量(设置ListView的长度) override fun getCount().

weixin_42020386的博客 1290

Android: 适配器中的 viewholder 的作用

首先我们使用ViewHolder 就是为了在RecyclerView 滚动时设置值的 在我们使用ListView或者RecyclerView时, 当有大量的数据需要加载的时候,会占据大量内存,影响性能,这时候就需要按需填充并重新使用view来减少对象的创建。 静态类ViewHolder: 作用就是减少不必要的findViewById, 然后将底下的控件引用存在ViewHolder里面, 再在Vie...

weixin_44538695的博客 2913

ListView 优化之 ViewHolder 复用机制

文章内容摘取自- 深入了解ListView工作原理(一) – 之viewHolder优化篇 ListView中convertView和ViewHolder的复用机制工作原理 ViewHolder 复用机制 在使用 ListView 过程中适配器 Adapter 中的 getView() 方法中已经通过 convertView 复用机制(RecycleBin 回收再利用) 进行了优化。 ...

moduzhang的博客 6380
上一篇: 抓取模拟器中的数据包
下一篇: ListView模仿——支付宝手机客户端长按ListView的Item弹出操作按钮效果
ttdevs
博客等级 码龄15年 388粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值