本文部分参考 http://www.cnblogs.com/ufocdy/archive/2011/03/17/1987327.html
主要是以简单的语言说明cursor和cursorAdapter的监听机制
先来讲讲cursor的监听机制,
给cursor加监听很简单,调用cursor.registerContentOberserver()即可,然后重写onChange()方法,这样数据库变化,就会回调onChange方法
背后的监听机制是什么呢?
cursor是接口,实现应该是在AbstractCursor里面,AbstractCursor有一个ContentObservable继承自Observable,这个就是经典的观察者模式了,
调用这个方法后,会向这里注册一个观察者,来监控数据库
现在有观察者了,那数据库变化,又是怎么通知过来的呢?
还记得自定义provider的时候,有一句必须要加的话不?在add和update和delete的时候--->cur.setNotificationUri(getContext().getContentResolver(), uri);
这里就是通知observer数据库变化的,其实是通知AbstractCursor的setNotificationUri
public void setNotificationUri(ContentResolver cr, Uri notifyUri) {
synchronized (mSelfObserverLock) {
mNotifyUri = notifyUri;
mContentResolver = cr;
if (mSelfObserver != null) {
mContentResolver.unregisterContentObserver(mSelfObserver);
}
mSelfObserver = new SelfContentObserver(this);
mContentResolver.registerContentObserver(mNotifyUri, true, mSelfObserver);
mSelfObserverRegistered = true;
}
}
然后上面我们不是刚好通过cursor在这个AbstractCursor中加入了观察者么?原来世界如此美好,数据库的变化一切尽在监控之中
再来说说cursorAdapter的监听
cursorAdapter自己内部已经做好了监听,你想在数据库变化后做一些改变,只要重写onContentChanged()即可
那么它是如何监听的呢?
其实他的机制和上面的cursor是一样,在你调用cusoradapeter.changeCursor方法的时候,系统会调用一个 cursorAdapter.registerContentObserver和registerDatasetObserver,同时取消上次注册的监 听
然后呢?然后就没有然后了,你坐等数据库变化就可以了
相关推荐
androidx-cursoradapter-1.0.0.aar
内容概要: ...能学到什么:ContentProvider、ContentResolver、CursorAdapter、Cursor、后台服务、前台服务、绑定服务、自定义广播、播放进度条、OnClickListener监听器 适用人群:Android开发初学者
使用CursorAdapter写了一个小的应用
android demo,listview,cursorAdapter的使用,
a simple demo about the use of CursorAdapter on Android
CursorAdapter和ListView结合使用,相关博文:http://www.cnblogs.com/tianzhijiexian/p/4019645.html
NULL 博文链接:https://zymic.iteye.com/blog/743538
CursorAdapter的用法 简单的CursorAdapter的用法 简单入门
VFP 通过CursorAdapter 连接access的各种方式
我从网络下载的有关 CursorAdapter(CA)相关资料,其中有: ...CursorAdapter类的制作和应用1-2(作者:mihu) vfp9.0 C/S(ODBC)方面极富人性化的增强(作者:mihu) vfp9 CursorAdapter 事务应用的2个注意事项(作者:mihu)
1.Android调用系统通讯录 2.选择联系人 3.拨打电话 4.添加 查询联系人
到处可以看到VFP专家Doug Hennig的大作--CursorAdapter起步,但很难看到其中说到的附件(SFDataClasses.vcx),经常看到有人要这个类,但找不到。这个是我花了些精力和时间弄到的,有需要的Foxer,可以看看。
android-simple-listview-app 简单的Android ListView用法(CursorAdapter)示例
安卓开发-继承CursorAdapter实现自己的功能。这里就是往sqlite数据库插入数据,然后提取出数据并展示到listview中。这里仅仅是为了学习的目的。其实这里完全可以使用SimpleCursorAdapter来做。
NULL 博文链接:https://zhuqiang5138.iteye.com/blog/1356403
支持RecyclerView的CursorAdapter,包装了RecyclerView.Adapter的notifyDataSetChanged()相关系列方法。当数据发生改变的时候,只需要调用swapCursorItemChanged()等方法就行了。
可以使用 SQLite 数据库进行存储,并通过 Content Provider 和 CursorAdapter 等技术实现数据的查询和展示。 实现功能模块:包括用户登录注册、商品发布、商品搜索、购买下单、交易评价等功能模块。在实现这些功能...
CursorAdapter使用1
CursorAdapter的demo,作用是查询出数据库中到联系人名字(注意没有联系人就没有数据)
|--android dp和px之间转换 |--android INSTALL_PARSE_FAILED_MANIFEST_MALFORMED |--android root下禁用组件 |--android 判断网络状态 |--android 对话框样式 |--android 开机启动 |--android 挪动dialog的位置 |--...