我遇到了 LoaderManager 的问题。我在 sqlite 数据库中有一些表,还有表示 View ,它从表中获取数据。
我还实现了 LoaderManager,与 that excellent guide 中的完全一样它非常适合 table 。
但是我想更新一个表,并且不是从它获取更新结果,而是从与更新表相关的 sqlite View 中获取更新结果。在这种情况下,LoaderManager 似乎无法正常工作(未触发 onLoadFinished 回调)
我更新的表架构:
CREATE TABLE [table_scan] (
[_id] INTEGER PRIMARY KEY AUTOINCREMENT,
[NR_ID] INTEGER NOT NULL,
[T_ID] INTEGER NOT NULL,
[Color_ID] INTEGER NOT NULL,
[R_ID] INTEGER NOT NULL,
[Barcode] TEXT NOT NULL,
[NumberSeat] INTEGER,
[Date] DATETIME NOT NULL DEFAULT(DATETIME('now', 'localtime')),
[Deleted] INTEGER NOT NULL DEFAULT '0',
[Status] INTEGER NOT NULL DEFAULT '0',
[Export] INTEGER NOT NULL DEFAULT '0');
我的 sqlite View :
CREATE VIEW [view_scan] AS SELECT _id, Barcode, Status, Deleted, NumberSeat,
goods_catalog.T_Articul, colors_catalog.Color_Name, sizes_catalog.R_Name
FROM table_scan
INNER JOIN goods_catalog ON goods_catalog.T_ID = table_scan.T_ID
INNER JOIN colors_catalog ON colors_catalog.Color_ID = table_scan.Color_ID
INNER JOIN sizes_catalog ON sizes_catalog.R_ID = table_scan.R_ID
WHERE Deleted = 0;
最佳答案
像下面这样很容易做到,不需要使用触发器!
public Cursor query(...) {
...
case view_scan
...
cursor.setNotificationUri(resolver, AUTHORITY_URI);
}
public Uri insert(Uri uri, ContentValues values) {
...
case table_scan:
...
cursor.setNotificationUri(resolver, AUTHORITY_URI);
}
关于android - 如何使用 sqlite View 更新 Loader?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20471021/