这就是我想要做的事情:
_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);
答案 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
时没有任何不同或无效。