位置: 编程技术 - 正文

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

  • 季度所得税费用如何计提
  • 知识产权入股需要过户给对方么
  • 成本结转不规范会受到什么罚款
  • 税金及附加可以为负数吗
  • 外币实收资本入账汇率
  • 工程收入开票
  • 外管证过期了一个月罚款多少
  • 在建工程有应交税费吗
  • 税控盘费用减免分录
  • 公司车辆交强险需要什么手续
  • 即征即退增值税需要缴纳所得税吗
  • 贸易公司给客户开发票
  • 广告业的定额发票可以税前扣除么?
  • 往期从价房产税未申报怎么处理
  • 分公司注销未分配利润转给总部,总部如何做账
  • 一般纳税人企业要交哪些税
  • 增值税先征后退属于政府补助吗
  • 主营业成本和销售费用的区别
  • 一次性收取一年服务费怎么确定收入
  • 已认证发票退货怎么办
  • 以前年度损益申报怎么报所得税
  • 合作社人工工资账务处理
  • 公司买手机给员工怎么做账
  • 购买商品接受劳务的现金流包括哪些
  • 进口的固定资产包括哪些
  • 系统属性的表现
  • win10蓝牙添加设备闪退
  • 建筑业预缴企业所得税表项目金额填合同金额吗
  • 入库材料未付款属于什么会计科目
  • sonar-scanner需要配置环境变量
  • Cursor!!!GPT-4帮我写代码
  • html基础网页
  • php23种设计模式
  • 工作服计入什么明细科目
  • 赔偿金需要交税么
  • 学生誓词最新2022年
  • 专票减免政策
  • 合伙结算转借款
  • 什么是印花税,怎么征收
  • 行政事业单位支出劳务费规定
  • 企业向个人借款利息如何缴纳增值税
  • mongodb导出数据库数据文件
  • 购买工业用地
  • 健身房注册公司能注册医疗吗?
  • 应交税金相关内容包括
  • 分公司注册独立核算还是非独立核算
  • 固定资产折旧计算方法公式大全
  • 商业汇票贴现时间轴
  • sql中多条件查询
  • 幼儿园固定资产说明怎么写
  • 以前年度损益调整怎么做账
  • 管理费用税金包括
  • 跨年收入冲销如何申报
  • 注册资本为0的公司可以去吗
  • 购置固定资产进项税处理的变迁
  • 凭证扣除 28号
  • 保洁阿姨工资怎么扣税
  • mysql密码怎么找回
  • xbox预览系统
  • mac系统怎么样
  • win8管理员权限怎么打开
  • 用户请愿地址曝露怎么办
  • linux targz
  • windows7怎
  • xp系统的搜索
  • win8.1使用教程
  • nodejs formidable
  • 批处理语言 从入门到精通
  • 批处理统计文件夹内文件大小
  • jquery日期组件
  • python3网络爬虫
  • js字符串编码解码
  • python写抢购教程
  • jquery easyui开发指南
  • jquery设置滚动条高度
  • 票据代码和票据号码是什么意思
  • 发票为什么要验旧操作
  • 深圳市国家税务局网站
  • 出口货物开票税率是多少
  • 贵阳地铁报销凭证
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设