位置: 编程技术 - 正文

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

  • 印花税什么时候开始计入税金及附加
  • 只有增值税专用发票才能勾选抵扣吗
  • 公司一般户需要年检吗
  • 返点的保险费应计入哪里
  • 退回以前年度的增值税账务处理
  • 汇算清缴补缴纳企业所得税会计分录
  • 外购生物资产的成本不包括
  • 对外销售的材料的成本应计入什么账户
  • 车间管理人员的工资属于
  • 固定资产的资本化后续支出
  • 应收票据背书支付
  • 未计提职工教育经费汇算清缴
  • 金税三期啥意思
  • 高新技术企业认定管理办法
  • 货代免税是否需要每年备案
  • 境内所得和境外所得
  • 营改增之前的增值税
  • 个人所得税应纳税额计算表图片
  • 以前年度多计提的附加税怎么调账
  • 年末存货怎么计算
  • 收到其他公司的罚款会计分录
  • 车辆购置税可以代缴吗
  • word表格跨页设置
  • linux的使用场合
  • 三代税款手续费支付比例
  • 联想笔记本在bios中怎么把图标和字变大
  • linux is
  • linux系统备份整个硬盘的命令
  • 租赁费和场地租赁费区别
  • ftp指什么
  • php 操作mysql
  • 子公司财务管理策略有哪些
  • php socket编程
  • 维保服务的税率是多少
  • Vue3 + Pinia 持久化存储
  • 暂估金额与发票金额会影响什么信息
  • 增值税专用发票有几联?
  • javascript怎么用
  • 其他应付款包括应付股利和应付利息吗
  • 汇算清缴后缴纳的企业所得税怎么做分录
  • 新准则下担保企业有哪些
  • 固定资产清理是什么意思
  • 法人股东分红要缴纳多少税
  • 发票6个点怎么算收税点
  • php视频加水印
  • 个税显示申报成功是不是就可以了
  • 混合销售如何做会计分录
  • 建筑工程分包案例
  • 一般纳税人承租个人房屋怎么抵扣
  • 本月开发票下月收款
  • 缴纳上月增值税及本月预缴增值税
  • 所得税汇算清缴退税会计分录怎么做
  • 逾期未认证的增值税发票处理办法
  • 个人应如何进行社会实践
  • 存货周转次数下降的原因
  • 研发支出费用化支出期末有余额吗
  • 免税企业开了含税吗
  • 卸车费属于什么费用类别
  • 固定资产原价的含义
  • 领购发票的方式有哪些
  • 房屋销售预收如何交税
  • 合并编制报表主要有哪几种
  • 其他综合收益包括留存收益吗
  • 基于mysql的sql应用
  • mysql连接查询和子查询效率
  • xp系统桌面在c盘哪个位置
  • linux将文件a.txt更名为b.txt
  • windows server 2016 百度网盘下载
  • win7开始菜单中的程序图标修改了
  • win7安装kb4534310补丁失败
  • win7系统更新怎么关闭
  • linux怎么格式化硬盘
  • windows 8 key
  • 百度地图api报错502
  • android基础入门
  • python3连接pg执行命令
  • 广东税务APP实名可以注册两个吗?
  • 一般纳税人开票的税率是多少
  • 先征后返的增值税计入哪个科目
  • 纳税申报的期限是多久
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设