1

我使用表格视图对钛进行了简单的应用。我在左侧有一些带有复选框的自定义行。这是我的代码:

    var pickingData = [];

    for (var i = 0; i<25; i++){
        var row = Ti.UI.createTableViewRow({
            className:'forumEvent', // used to improve table performance
            backgroundSelectedColor:'cyan',
            layout:'vertical'
        });

        if (Titanium.Platform.osname === 'android'){
            var checkbox = Ti.UI.createSwitch({
                style:Ti.UI.Android.SWITCH_STYLE_CHECKBOX,
                value:false,
                left:10
            });
            row.add(checkbox);
        }

        var rndMatNo = (randomInt(50000)+10000) //randomInt is my random number function
        var lblMatNo = Ti.UI.createLabel({
            realValue:rndMatNo,
            text:'Mat No : ' + rndMatNo,
            font:{fontFamily:'Arial', fontSize:DefaultFontSize, fontWeight:'bold'},
            left:10,
            color:'#222'
        });
        row.add(lblMatNo);

        pickingData.push(row);
    }

    var tempPickingTable =  Titanium.UI.createTableView({
        data:pickingData,
        editable: Titanium.Platform.osname === 'iphone' ? true : false,
        name:'Picking table'
    });

    tempPickingTable.addEventListener('longclick',function(e){
        for (var i=0, length=tempPickingTable.data[0].rows.length;i<length;i++){
            if (tempPickingTable.data[0].rows[i].children[0].value === true){
                tempPickingTable.deleteRow(i); //Still error when i'm using delete row because index out of bound
            }

        }
    });

我想要的只是在选中时根据复选框删除行。我试过循环每一行并选中复选框,然后删除该行,但它仍然给我错误索引超出范围。

有谁知道该怎么做?提前致谢..

4

2 回答 2

3

TableView从Android中删除行存在一些错误。您可以尝试创建一个包含除已检查行之外的所有行的新数据数组,然后再次为 tableview 设置数据。

于 2012-11-02T08:52:21.123 回答
1

您正在遍历数组并删除行,这会修改数组,因此您会越界是有道理的。您是否尝试过向后迭代?

tempPickingTable.addEventListener('longclick',function(e){
    for (var i=tempPickingTable.data[0].rows.length;i>=0;i--){
        if (tempPickingTable.data[0].rows[i].children[0].value === true){
            tempPickingTable.deleteRow(i);
        }
    }
});
于 2012-11-04T03:21:46.950 回答