gpt4 book ai didi

Android Cursor.registerContentObserver()

转载 作者:太空宇宙 更新时间:2023-11-03 12:24:52 25 4
gpt4 key购买 nike

我正在使用几个 ListView ,每个 ListView 都使用一个子类 SimpleCursorAdapter 来处理来自数据库的结果。这是一个简单的日记查看器, Activity 1 = 天, Activity 2 = 周。

我正在尝试删除日 ListView 中的项目,然后在更改后刷新日 View 和周 View 。

如果我在已删除的 Activity 中调用 cursor.requery(),它会反射(reflect)更改。但是,其他 Activity 不知道更改。

我想我想使用 Cursor.registerContentObserver,因为文档声称“注册一个观察者,当支持此游标的内容发生变化时调用该观察者。通常,数据集在调用 requery() 之前不会改变。”

然而,我天真地写了一个内容观察器:

private class dbObserver extends ContentObserver {

public dbObserver(Handler handler) {
super(handler);
}

@Override
public void onChange(boolean selfChange) {
lectureCursor.requery();
super.onChange(selfChange);
}

}

然后在每个 Activity 的onCreate中:

dbObserver test = new dbObserver(new Handler());
lectureCursor.registerContentObserver(test);

但是当我从数据库中删除时,永远不会调用 onChange。我在这里做傻事吗?

最佳答案

原来你需要调用:

cursor.setNotificationUri(getContentResolver(), uri);

使光标通知您的观察者有关更改。

关于Android Cursor.registerContentObserver(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4618591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com