位置: 编程技术 - 正文

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

  • 开票资料银行必须填写吗
  • 申报过后财务报告怎么查
  • 工会经费税前扣除凭证
  • 印花税的计税依据怎么算公式
  • 预缴增值税城建怎么算
  • 自然人转让股权给自己的公司
  • 房产原值怎么计算房产面积
  • 自建生产用机器设备领用本企业生产的产品
  • 厂房鉴定公司
  • 有留抵税额会计分录
  • 缴纳了土地增值税怎么退
  • 企业拥有房产每年如何交税
  • 接受政府无偿划拨固定资产税务处理
  • 航天金税服务费280怎么缴费
  • 待处理财产损益计入资产负债表哪里
  • 应收账款核销会议纪要
  • 物业公司收空调费怎么交税
  • 旅行社的综合服务费
  • 计提成本账务处理
  • 银行存款日记账怎么记账
  • 出纳能不能兼开专票
  • 无形资产的摊销应计入什么科目
  • win10电脑如何设置锁屏时间
  • 收益相关的政府补助分录
  • 如何进入企业年报系统
  • dsm是什么文件
  • framework教程
  • 特许权使用费20%
  • 前端工程化的理解简书
  • 山上覆盖着皑皑白雪
  • 长期股权投资追加投资
  • php中数据库怎么设计
  • 查补的增值税账务处理
  • 前端vue3
  • 体验了一回
  • 关联数据查询
  • 织梦如何给栏目增加缩略图
  • dedecms默认用户名
  • 分公司可以分配利润吗
  • 怎么向银行申请贷款
  • 国税联网状态怎么没显示
  • 企业的留存收益有
  • mysql数据库导出xml的实现方法
  • sql如何查询某个表的列名
  • 单位买的空调计入什么科目
  • 企业管理费用科目期末一般是
  • 出租机械设备
  • 贷款担保费应计入什么
  • 企业代扣代缴个税
  • 合理的物料消耗是指
  • 房地产开发企业会计制度
  • 财产租赁合同印花税申报期限
  • 冲减以前年度营业外收入分录
  • 向银行借的款属于什么会计要素
  • 对公账户往来款需要开票吗
  • 资本公积可以随便增加吗
  • 新成立的公司发朋友圈文案
  • 每月可以先报税再缴费吗
  • 电汇凭证需要盖什么章
  • 银行本票具体操作流程
  • MySQL利用视图查询员工进货数量要求输出姓名进货数量
  • centos访问网页命令
  • 电脑更新windows11后开机一黑屏
  • win8应用商店废了
  • ubuntu20.04 vim
  • ubuntu 18.04怎么用
  • win10一年更新一次
  • win8自动进入桌面
  • win8.1关机没反应
  • netfilter/iptables模块编译及应用
  • Manjaro Linux 0.8.13发布下载 可将系统装入SD卡
  • combobox jsp
  • 根据当前目录下的文件
  • nodejs使用视频教程
  • angularjs常用总结
  • 开源 android 播放器
  • android混淆后怎么破解
  • python文件遍历
  • 个人所得税子女教育和赡养老人抵扣多少税
  • 福建省国税局电话号码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设