1

LoaderManagerに問題がありました。sqlite データベースにいくつかのテーブルがあり、テーブルからデータを取得する表現ビューもあります。

その優れたガイドとまったく同じように、LoaderManagerも実装しましたが、テーブルに対して完全に機能します。

しかし、私は1つのテーブルを更新し、更新された結果をそこからではなく、更新されたテーブルに関連するsqliteビューから取得したいと考えています。この場合、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ビュー:

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;
4

2 に答える 2

1

以下のように簡単に実行できます。トリガーを使用する必要はありません。

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);
}
于 2015-01-20T13:19:05.677 に答える