私は Titanium SDK 2.1.3 を使用しており、iOS 6.1 と Android 4.0 の両方で開発しています。
私のアプリケーションには TableView があり、各 TableViewRow はファイルを表し、lockedStatus というカスタム プロパティがあり、true または false のいずれかになります。行がクリックされると、lockedStatus の値に応じて、要素の状態を示すウィンドウが開きます。行。このウィンドウで、lockedStatus を true から false に、またはその逆に変更できます。
私が抱えている問題は、Android ではこのプロパティに加えられた変更が無視されることです。アプリケーションを完全に強制的に停止しない限り、これは iOS では発生しません。
ウィンドウの lockedStatus 値を変更するには、次のようなイベントを発生させます。
Ti.App.fireEvent('updateLockedStatus', {
lockedStatus : true //this can be true or false
});
次に、リスナーは次のようになります。
Ti.App.addEventListener('updateLockedStatus', function(e){
var rows = table.data[0].rows;
for (var i = 0; i < rows.length; i++) //iterate through the rows to look for the file
{
if (rows[i].fileID == currentlyEditingFile)
{
rows[i].updateLockedStatus(e.lockedStatus);
files[currentlyEditingFile].lockedStatus = e.lockedStatus; //update the file lockedStatus
rows[i].fileObject = files[currentlyEditingFile];
saveFilesToDatabase();
}
}
});
各行は、次の定義を持つ updateLockedStatus 関数で生成されます。
row.updateLockedStatus = function(lockedStatus)
{
row.lockedStatus = lockedStatus;
}
saveFilesToDatabase 関数は次のようになります。
function saveFilesToDatabase()
{
var tempFilesArray = [];
for(var i=0;i<filesIds.length;i++)
{
tempFilesArray.push(files[filesIds[i]]);
}
Ti.App.Properties.setString('filesApp', JSON.stringify(tempFilesArray)); //save the file values in the application properties
}
無視されるということは、ウィンドウを終了してファイルのテーブルを含むビューに戻るときに、変更したばかりのファイルをもう一度クリックすると、変更が行われていないかのようにウィンドウが開かれるということです。
TableView のすべてのコンテンツを強制的に更新するにはどうすればよいですか? iOSでは問題ありませんが、Androidではアプリを閉じないと更新されません。
どんな助けでも大歓迎です。