当setData为空数组时,Titanium appcelerator tableview保持高度

时间:2017-01-23 13:10:17

标签: titanium titanium-mobile appcelerator-titanium

我有一个tableview,我用这样的数据提供:

var liste = ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi','Dimanche'];
var days = [];

for (var i = 0; i < liste.length; i++) {
    days.push(Alloy.createController("common/_item_tableview", {
                text_filtre : liste[i],
                checked : true,
            }).getView());
}

$.my_tableview.setData(days); // or $.my_tableview.data = days;

使用此代码,我得到一个填充了天行的tableview,现在我想点击一个按钮并删除所有tableview行:

$.my_button.addEventListener('click', function(){
    $.my_tableview.setData([]);
})

所有行都被删除但是tableview仍然保持高度,你有什么想法吗?这是setData([])之后的屏幕截图,当我想用​​另一个数据重新提供tableview时,会在此上面添加一个位空间。

Screenshot Tableview after setData([])

谢谢。

2 个答案:

答案 0 :(得分:0)

最好添加TableView现在拥有的样式属性。您使用Ti.UI.SIZE作为TableView的height属性吗?如果没有,那么你应该这样做。如果这样做,那么在调用setData方法之后重新设置它可能是个好主意。

$.my_button.addEventListener('click', function(){
    $.my_tableview.setData([]);
    $.my_tableview.height = Ti.UI.SIZE;
});

现在,另一件事就是让TableView的高度为Ti.UI.FILL占据整个屏幕。当您需要清除数据时,您应该使TableView不可见,如下所示:

$.my_button.addEventListener('click', function(){
    $.my_tableview.visible = false;
});

然后,如果您需要再次填充它,您可以在设置新数据后将其显示。

var newData = []; // This represents the new TableViewRow array 
$.my_tableview.setData(newData);
$.my_tableview.visible = true;

答案 1 :(得分:0)

查看您发布的屏幕截图,这不是保持高度的桌面视图,这就是空的桌面视图。

要删除这些分隔符行,请为表视图指定一个空的footerView。

在xml文件中,在tableView中添加一个FooterView标记:

<TableView id = "my_tableview">
    <FooterView>
        <View height="0"/>
    </FooterView>
</TableView>