Titanium使用新数据刷新TableView

时间:2011-06-20 10:46:13

标签: refresh titanium tableview

这就是我想要做的事情:

_tableView.data[0].rows[selectedPosY].children[selectedPosX].imageId = tempImageId;     
_tableView.data[0].rows[selectedPosY].children[selectedPosX].image = tempImageUrl;  
Titanium.API.info("imageIdSelected:" + 
_tableView.data[0].rows[selectedPosY].children[selectedPosX].imageId + "imageSelected:" + 
_tableView.data[0].rows[selectedPosY].children[selectedPosX].image); 

更新是在数据上完成的,但它没有反映在UI表中,缺少什么?

我甚至尝试按照How can I refresh my TableView in titanium?& How to resolve Titanium TableView display problem?,但它没有刷新UI表     _tableView.setData(_tableView.data); win.add(_tableView);

2 个答案:

答案 0 :(得分:2)

事实证明,更新/重新加载Titanium.UI.TableView的唯一方法是获取更新数据的副本(按照逻辑)并使用'setData'在TableView中重置它。对于我的例子,由于_tableView.data正在更新(可以通过日志记录语句看到),我可以使用javascript数组复制函数来复制它;

var data2 =_tableView.data.slice(0); 
_tableView.setData(data2);

虽然根据上述知识,我重构了我的代码,所以,我没有使用这个确切的代码,而是类似的逻辑。但是,总的来说,这种更新表的方式看起来并不吸引人,如果有更好的处理方法,请发帖,这会有很大的帮助。

答案 1 :(得分:0)

在使用_tableView.data[0].rows时,您为什么要_tableView.data,然后只是setData

您的_tableView.data应该是一系列行/部分。 Ti.UI.tableView对象具有data属性,但数据的结构应如下所示。

_tableView.data = [
    {title:"Row 1"},
    {title:"Row 2"}
];

当你这样做时.rows为你完成了什么,你如何使用.rows?我不是肯定的,但我认为_tableView.data在尝试setData时没有任何不同或无效。