2011-06-20 72 views
2

這就是我想要做的事:鈦清爽的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

原來,更新/重新加載Titanium.UI.TableView的唯一方法是獲取更新數據的副本(按照邏輯),並使用'setData'將其重置到TableView中。對於我的示例,由於_tableView.data正在更新(可以通過日誌記錄來查看),所以我可以使用javascript數組複製函數來複制它,例如;

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

雖然,有了上述知識,我重構了我的代碼,所以,我沒有使用這個確切的代碼,而是一個類似的邏輯。但總的來說,這種更新表格的方式似乎不太吸引人,如果有更好的方法來處理這個問題,請發帖,這會有很大的幫助。

0

爲什麼你要做_tableView.data[0].rows然後只有_tableView.data使用setData?您的_tableView.data應該是行/節的數組。 Ti.UI.tableView對象具有數據屬性,但數據結構如下。

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

什麼是.rows完成你,當你正在做這樣的說法,你是如何使用.rows?我不是正面的,但我認爲_tableView.data或者沒有不同,或者在嘗試setData時無效。

+0

我一直在嘗試不同的東西,以獲得代碼工作。用我上面的代碼,語句'Titanium.API.info ..'顯示數據得到更新,但它不更新_tableView。 如何更新TableView中的特定行/單元格並刷新UI中的表格?你能舉一個例子嗎? –