android - 如何使用 sqlite View 更新 Loader?

标签 android sqlite android-sqlite android-loader

我遇到了 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/

相关文章:

SQLite:使用 ON DELETE CASCADE 时性能不佳

android - Android中的多个表SQLite DB适配器?

sql - SQLite DISTINCT结果不一致

java - 在从服务器数据更新数据之前,我应该从表 SQLite 中删除数据吗?

android - SQLite Android 内部连接

java - Android:ImageView只应在一种条件下显示图像,但始终显示它

android - 缓存图像并显示

IntelliJ 14 中的 Android/Scala 项目编译,但在启动时崩溃,找不到 Scala 类

Android 开发初学者 : What are resources and what are their purposes?

Android 房间数据库没有立即在数据库中插入数据