位置: 编程技术 - 正文

高级控件AdapterView(二):通过Observer实现数据、视图同步刷新(高级控件动态数据加载过程有哪些)

编辑:rootadmin
多条目控件AdapterView是仿MVC设计模式进行设计的,即AdapterView与数据是分离的,AdapterView并不直接操作数据,而是利用中间件适配器Adapter,实际上,完整的AdapterView显示是三个逻辑部分:AdapterView&#;Adapter&#;Data,Adapter相当于MVC中的控制器C,AdapterView相当于MVC中的视图V,顺便说一句,Android程序设计,也是利用MVC控制模式。既然视图与数据是分离的,那么当数据有更新时,视图显然无法自动更新,Adapter必须实时监控数据变化并刷新视图,这里用到的是Observer(观察者模式)。一、DataSetObserver类DataSetObserver类的API这样描述:DataSetObserver(观察者)通常设置给Cursor或Adapter,如果数据发生变化则回调该类方法。DataSetObserver类无法单独调用,必须配合DataSetObservable类使用。该类的实例即是Observer,观察者的刷新视图行为是由onChanged以及onInvalidated方法决定的,通常在AdapterView控件,如ListView中继承该类,并通过重写这两个方法,实现针对性的视图刷新。

推荐整理分享高级控件AdapterView(二):通过Observer实现数据、视图同步刷新(高级控件动态数据加载过程有哪些),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android高级控件实验报告,高级控件 PPT,高级控件动态数据加载过程有哪些,高级控件动态数据加载过程有哪些,高级控件代码,高级控件代码,高级控件代码,高级控件 PPT 课程思政,内容如对您有帮助,希望把文章链接给更多的朋友!

二、Observable类继承体系

2.1、Observable基类

这是一个抽象基类,该类主要提供对Observer进行注册或解除注册到ArrayList数据集(Observer必须绑定到某个数据集才能监测)。 源码如下:

2.2、DataSetObservable类

这是一个可实例化类,通常在对ArrayList数据进行更新后,主动调用notifyChanged()函数,若ArrayList数据失效,比如给视图绑定新的数据源等等,调用notifyInvalidated,源码如下:

高级控件AdapterView(二):通过Observer实现数据、视图同步刷新(高级控件动态数据加载过程有哪些)

三、适配器Adapter中与DataSetObserver有关的方法

3.1、adapter中相关源码3.2、BaseAdapter中相关源码

3.3、小结

Adapter主要是注册一个Observer,然后在数据有变化时,主动调用notifyDataSetChanged()或notifyInvalidated(),而决定数据在出现变化后的行为(主要是onchanged()方法决定),一般需要在AdapterView中进行个性定制。

四、AdapterView中与DataSetObserver有关的方法

4.1、AdapterViewAdapterView中写了一个继承DataSetObserver的内部类AdapterDataSetObserver,主要是重新onChanged(),onInvalidated()方法,以执行AdapterView的刷新视图操作4.2、ListViewListView中,主要是setAdapter()方法将适配器Adapter绑定到ListView,并设置Adapter的观察者为AdapterDataSetObserver。4.3、小结AdapterView控件主要定义Observer行为,即Onchanged()和onInvalidated()方法,然后通过Adapter的注册方法registerDataSetObserver()对定制的mDataSetObserver注册。

五、简单Demo

实现长按长按ListView并删除所在项,主要代码如下:

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android 触摸事件传递机制 android系统中的每个View的子类都具有下面三个和TouchEvent处理密切相关的方法:1)publicbooleandispatchTouchEvent(MotionEventev)这个方法用来分发TouchEvent2)publicbool

RSA加密解密及数字签名Java实现 RSA加密解密及数字签名Java实现RSA公钥加密算法是年由罗纳德·李维斯特(RonRivest)、阿迪·萨莫尔(AdiShamir)和伦纳德·阿德曼(LeonardAdleman)一起提

定制Android ListView 快速滚动的滚动条-fast scroll bar thumb 1.方法一:privatevoidinitScrollBar(){try{Fieldf=AbsListView.class.getDeclaredField(mFastScroller);f.setAccessible(true);Objecto=f.get(mListView);f=f.getType().getDeclaredField(mThumbDrawable);f.se

标签: 高级控件动态数据加载过程有哪些

本文链接地址:https://www.jiuchutong.com/biancheng/370981.html 转载请保留说明!

上一篇:如何解决Android SDK中离线文档打开慢的问题(如何解决android代码红线)

下一篇:Android 触摸事件传递机制(Android触摸事件回调方法)

  • 个人出租住宅需要缴纳房产税吗
  • 公司账户转私人账户要多久时间
  • 水泥建材公司
  • 为职工垫付的水电费应计入
  • 未完工工程如何做绩效评价
  • 2019年所得税季度增值税怎么报
  • 金融服务征税范围包括哪些
  • 票据遗失可以采取哪些补救措施
  • 母子公司往来款属于借款吗
  • 汇算清缴补交需要调报表吗
  • 拆迁房视同销售成本可以抵减吗?
  • 土地储备机构也称为什么
  • 购买沙子违法吗
  • 固定资产进项税额
  • 公司充加油卡发票税额为0 怎么入账
  • 小规模适用税率
  • 现金流量表怎么做
  • 兼营销售的销售额的确定
  • 应付账款是贵公司欠还是欠贵公司
  • win11重置此电脑失败
  • 怎么用u盘启动dos
  • 个税是负数直接工资加上吗
  • 企业所得税汇算清缴操作流程
  • 公司回购股份有什么好处
  • 公积金补缴上月算断缴吗
  • 法人把资产转移到国外有没有限制
  • mac屏幕横过来了
  • 交房产税要带身份证嘛
  • 公司买了一辆二手汽车,怎么入账
  • 自定义发件人邮件
  • win11系统未激活
  • 长期借款的业务处理
  • 违约金列支
  • 奖金发放的原则
  • 实收资本的会计编码
  • 欧罗巴山国家公园旅游攻略
  • vue状态管理有哪些
  • 分配结转制造费用时借方科目?
  • 会计科目分类有几种方法
  • push指令执行的详细过程
  • 平价转让股权怎么交企业所得税
  • 所有者权益总计怎么算沙盘
  • 公司的注册资本是什么意思
  • 综合所得内容有哪些
  • mybatis的
  • phpcms v9搬家不同步怎么办
  • 工会经费发放奖励个税处理
  • 处置子公司如何纳税
  • 进口产品销售需要交税吗
  • 公司的零星开支怎么做账
  • 公立医院事业单位工作人员招聘实践考核自我评价
  • 贷款利息进项税为什么不能抵扣
  • 销售商品发生的运输费计入什么科目
  • 银行日记账上月的余额要结转吗
  • 所得税汇算清缴前取得跨年发票
  • 本月增加无形资产什么时候计提折旧
  • 公司运营成本如何计算
  • 企业注销时实收资本清算时要作资产处置收益交所得税吗
  • 银行收取服务费
  • 融资租赁的服务费是什么票
  • 基本工资和什么挂钩
  • 业务招待费纳税筹划
  • 快递费用在线查询
  • 企业购买黄金该交什么税
  • 公司水电费如何做账
  • 什么是资产减值准备计提
  • 会计账务做得混乱的原因
  • myeclipse连接mysql要装软件吗
  • WIN10如何设置字体大小
  • win7 分区表
  • win7小键盘怎么调出
  • win7不能自动启动
  • 简单阐述javascript的主要作用
  • python字典常用操作以及字典的嵌套
  • python该怎么用
  • cmd 更改密码
  • js键盘事件有哪些?各自的作用如何
  • 置顶语句子
  • js倒计时秒杀
  • 没有核定印花税可以按次申报吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设