Google API Android 2.3.1では、データベーステーブルのデータ変更はテーブルビュー画面に反映されませんが、アプリを再起動すると変更が表示され、app.jsを読み込むと最近の変更が表示されます。
誰かが私がこれを修正するのを手伝ってもらえますか?
fireEvent("db_update")
&
addEventListener('db_update'、function(){テーブルデータを更新するためにここにあるべきもの})
Google API Android 2.3.1では、データベーステーブルのデータ変更はテーブルビュー画面に反映されませんが、アプリを再起動すると変更が表示され、app.jsを読み込むと最近の変更が表示されます。
誰かが私がこれを修正するのを手伝ってもらえますか?
fireEvent("db_update")
&
addEventListener('db_update'、function(){テーブルデータを更新するためにここにあるべきもの})
データベースを更新するには、最初にデータベースを削除してから、新しいデータベースをインストールする必要があります。または、クエリを実行して現在のクエリを更新します。
プロパティに保存しているバージョン番号に基づいて、データベースを更新する方法は次のとおりです。
function updateDatabase(version){
if (version != Ti.App.Properties.getInt('version',0)){
sb.db.remove();
sb.db = Ti.Database.install('/lib/db.sqlite','db');
Ti.App.Properties.setInt('version',version);
}
}
アプリでは、起動時に、手動で入力したバージョン番号を使用して関数を実行します。データベースが変更されるたびに、この番号を手動で変更できます。
updateDatabase(5);
もちろん、これはテーブルの内容の定期的な更新を反映していません。(データベースで通常のクエリを実行する場合)。
その場合は、テーブルビューのコンテンツを自分で再構築するか(テーブルビューを埋めるコードがあり、そのコードを再実行する)、たとえばIDで変更する必要のある正確な行をターゲットにする方法を見つける必要があります。
私は解決策を見つけました、
Ti.App.addEventListener('updatedb', updateData);
ここで「updateData」は、データベースからテーブルビューのデータを取得する関数です。'updateData'関数の下部で、テーブルビューのデータを設定します
i.e) tableview.setData(data);
次に、挿入、更新、または削除関数が「updatedb」関数をトリガーする必要があります
すなわち)
function deleteData(recId) {
var db = Ti.Database.open(DBNAME);
db.execute(" DELETE FROM tblName WHERE id IN("+ recId+") ");
db.close();
Ti.App.fireEvent('dataupdated');
}
これで、deleteData関数を呼び出した後、テーブルビューデータに削除されたレコードが表示されなくなります。