Titanium:如何重新加载焦点上的标签?

时间:2011-04-10 13:48:48

标签: tabs focus titanium tableview reload

我在我的应用程序中构建了一个favorite-tab,它在数据库中显示标记为这样的条目。在背面这应该工作,但我无法弄清楚如何在更改后重新加载收藏夹选项卡。当我退出并重新启动应用程序时,更新会按原样显示。

本质上我遇到了与此处提出的问题相同的问题:http://developer.appcelerator.com/question/31211/tab---tableview--database-reload

  
    

“我的应用程序中有'搜索'和'搜索历史'选项卡。在此选项卡下执行的每个搜索都会插入到我的本地数据库中。     但是,在搜索之后,当我浏览它时,新搜索不会反映在从“搜索历史”选项卡中的数据库检索数据的tableview中。     但是,当我退出应用程序并重新启动它时,会加载最新的搜索。     我需要一些帮助来确定如何在不退出应用程序的情况下触发tableview重新加载。     解决方案更新:     对于提出这个问题,我觉得“不怎么样”,但实在是太简单了     我为窗口添加了一个'focus'eventlistener,用于加载选项卡以加载数据。     win.addEventListener('focus',function(){loadDBdata();});

  

这似乎是合理的,但loadDBdata函数应该包含什么? 我非常感谢任何指向这一点。

2 个答案:

答案 0 :(得分:0)

我建议在收藏夹更新时触发一个事件,并在包含收藏夹列表的桌子上放置一个事件监听器。当它收到事件时,它应该更新表内容。

看到这个问题我刚回答它应该提供解决问题的指南

Problems with refresh function for page, in Appcelerator

答案 1 :(得分:0)

loaddb函数应包含以下内容:

// init database
var db = Ti.Database.install('path/to/database.db','myDB');

// your request
var sql = 'SELECT * FROM myDatabaseTable';

// the result from that request
var myContent = db.execute(sql);

// need to put the result in a valid structure before inserting into your tableview
var data = [];
while (myContent.isValidRow()){
  // your tableviewrow
  var row = {
    title = myContent.field(0);
  };
  data.push(row);
  myContent.next();
};

// need to close stuff (!)
myContent.close();
db.close();

// finally return data
return data;