位置: 编程技术 - 正文

高级控件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触摸事件回调方法)

  • 保险中的车
  • 个人偶然所得税率多少
  • 小规模免税收入账务处理
  • 应交税费为什么记借方
  • 外经证错了已经交了税怎么办
  • 支付给外包公司的工资备注怎么写
  • 营改增后个人所得税计税依据实例
  • 物料损耗会计分录
  • 将自建的厂房对外转让需要缴纳增值税吗
  • 购买商品用于抵债的会计分录要怎么做?
  • 机动车发票抵扣联有什么用
  • 收入确认和发票的区别
  • 数字证书费
  • 企业所得税季度申报填写示例
  • 丧失控制权合并报表内部交易抵消
  • 投资性房地产后续支出包括
  • 企业清算期间账务怎么做
  • 当月增加的固定资产
  • 6%技术服务费是普票还是专票
  • 棚户区改造贷款管理办法
  • win10 net framework 3.5 离线
  • fssm32.exe是什么进程 有什么作用 fssm32进程查询
  • php单例模式应用场景
  • php和js 哪个简单
  • 农民工的职业培训
  • 小规模企业现金怎样管理
  • 免税农产品进项转出计算
  • php操作mysql数据库
  • php 跨域
  • 协会收到的政府奖励会计处理
  • 货物退回会计分录怎么做
  • 自学黑客技术入门教程
  • 【强化学习】Q-Learning算法详解
  • 通用机打发票可以查验吗
  • 增值税多交了五万怎么办
  • 滴滴普通发票如何开
  • php usort函数
  • phpcms怎么修改模板风格
  • 账上没有实收资本
  • 帝国cms破解授权
  • mongodb 权限设置
  • 企业合并结果
  • 报销业务招待费是什么凭证
  • 个税中的免税收入都包括什么
  • 一年的房租费摊销的账务处理
  • 小规模纳税人应交增值税明细科目
  • centos执行sh
  • 退个税需要提供哪些资料
  • 发行股票的好处和坏处
  • 贸易公司委托加工费怎么入账
  • 新销售收入的确认条件
  • 贷款用途不符合规定有啥危害
  • 员工报销医药费怎么做会计分录
  • 投资房地产的后续计量有哪几种模式
  • 付款申请单如何管理
  • 无法支付的应付账款摘要怎么写
  • 合同资产根据什么来编报表
  • 无偿赠送的货物如何申报增值税
  • 银行电子汇票到期后多久到账
  • 资产负债表中没有其他应收款
  • 转回小规模
  • 个体工商户的公章丢了怎么办
  • 无票收入怎么报增值税
  • win10下mysql 5.7.17 zip压缩包版安装教程
  • 解析包错误怎么解除
  • 如何使用U盘装机
  • 苹果电脑dashboard什么意思
  • ssonsvr.exe - ssonsvr是什么进程
  • winxp内存不能为read
  • 命令窗口的作用
  • win8开不了机怎么系统还原
  • cocos2dx node
  • exact form
  • Node.js中的核心模块包括哪些内容?
  • using kernel
  • flash和javascript
  • python多进程共享对象
  • 安卓手机管家怎么关闭
  • 进口商品的消费税计入成本吗
  • 民族贸易产生的原因
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设