位置: 编程技术 - 正文

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

  • 个体工商户一直没办税务登记证
  • 一般纳税人增值税可以抵扣吗
  • 什么是进项加计扣除
  • 已暂估入库原材料,确认收不到发票怎么调账
  • 没有收入也可以信用贷
  • 关税计入存货成本分录
  • 金税三期电子发票怎么领取
  • 开专票需要交城建税吗
  • 幼儿园申报税种及税率
  • 关联方交易容易产生哪些弊端
  • 铁路大票抵扣几个点
  • 建筑业简易征收差额征税的计算案例
  • 医院减免医药费后还可以报保险吗
  • 单位车转到个人名下要什么材料
  • 多交印花税申请怎么写
  • 承兑汇票银行背书
  • 土地增值税的征税对象,是村集体
  • 个人公寓出租给公司要交税吗?
  • 购买的技术服务费需要摊销吗
  • 税务局查到发票有问题
  • 公司入职员工
  • 金蝶软件不审核直接过账
  • 小微企业季度超过45万填报增值税
  • 其他业务收入借贷方向会计分录
  • 发出商品发生损失
  • 销售外购设备并提供安装服务
  • 劳务报酬计入综合所得吗
  • os x yosemite dp5下载地址 os x 10.10 dp5更新内容
  • PHP clearstatcache()函数详解
  • win10显示在哪
  • 销货方发票红冲操作流程
  • 最高像素是什么
  • vue如何配置环境变量
  • shell脚本攻略第三版pdf
  • 车辆购置税税收缴款书
  • 佛法戒律论
  • 善意取得虚开增值税专用发票处理
  • 购入专利权属于
  • vue3使用高德地图
  • vue 播放视频流
  • css 3有哪些新特性
  • 社保缴费基数是怎么确定的
  • php验证码代码怎么写
  • 逐期增长量与累计增长量
  • 外贸客户付款方式
  • 一般纳税人购入不动产增值税税率
  • 认缴股权的转让
  • 托收承付和委托收款区别
  • 新成立公司如何报税
  • 装饰公司财务工作内容
  • 收到托收凭证怎么做分录
  • 网银转账退回来是怎么回事
  • 现金日记账怎么记账
  • 工会经费可以在以后年度扣除吗
  • 工程材料票占工程款的比例
  • 仓库员工工资
  • 用于研发的材料如何入账
  • 外汇申报填写什么最简单
  • 应收账款的余额百分比
  • 低值易耗的管理制度
  • 暂估应付账款余额在贷方
  • 会计凭证发票粘贴
  • 为什么ibooks无法使用
  • ubuntu20.04忘记root密码
  • win7如何变快
  • 不格式化更改盘符
  • 作用
  • perl中\s+
  • [置顶] 此外,车牌号:454118(懂得都懂[doge])
  • Begin OpenGL with Python-1st Day,draw a simple sample.
  • unity 3d教程
  • nodejs 扫描目录
  • android面试题网站
  • 河北电子税务局开票流程
  • 青岛的红叶什么时候红
  • 133平房子公摊36.88
  • 苏州税务所电话是多少
  • 建筑工程异地预缴税款时间限制
  • 纳税人信用信息
  • 扬州儿童社保卡
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设