Titanium Appcelerator(合金):我想在tableview中添加和删除

时间:2017-07-31 18:03:07

标签: titanium appcelerator

我填写文本字段中的数据当我在Android键盘上按完它将输入tableviewrow中的数据,但我不知道如何? 我点击了按钮

,第二个问题是:我想删除点击按钮的数据 行有

hasCheck=true

i mean to say these rows on button click  index.xml

    

    <TableView id="table">
        <TableViewRow title="Capsicum" onClick="select"></TableViewRow>
        <TableViewRow title="Beans" onClick="select"></TableViewRow>
        <TableViewRow title="Spinach" onClick="select"></TableViewRow>
        <TableViewRow title="Pizza" onClick="select"></TableViewRow>
        <TableViewRow title="Burger" onClick="select"></TableViewRow>
    </TableView>
    <TextField id="textfield" class="insertField" hintText="Add ingredients"></TextField>
    <Button id="addButton" title="Add" onClick="addRow" ></Button>
    <Button id="removeButton" title="Remove" onClick="removeRow" ></Button>
</Window>

index.js文件

    function addRow(){
    var myTextFieldValue = $.textfield.getValue();
    var row=Ti.UI.createTableViewRow({title:myTextFieldValue});
    $.table.appendRow(row);
}


        function select(e) {
        if (e.row.hasCheck) {
            e.row.hasCheck = false;
        } else {
            e.row.hasCheck= true;
        }

    }

1 个答案:

答案 0 :(得分:1)

如果您正确遵循Appc Docs:

,这很简单

回答查询1:

对于TextField代理,有一个名为 return 的事件,当您在iOS或Android上按“完成”按钮或“返回”按钮时会调用该事件。但是,此返回按钮的标题可以是此处指定的任何内容: Return Key Title

因此,您必须在 TextField 节点中进行以下更改才能使其按下键盘上的Enter键,如下所示:

<TextField id="textfield" returnKeyType="Ti.UI.RETURNKEY_DONE" onReturn="addRow" class="insertField" hintText="Add ingredients" />

回答查询2:

您必须从表中获取所有行,这有点冗长,因为您无法直接从TableView获取行,而是首先需要获取TableView的第一部分&amp;然后来自部分的行。

注意: 如果您没有在TableView中添加任何部分,则默认情况下,Titanium会在TableView中添加一个部分并在此部分中添加行。这就是为什么你需要先处理第一部分的原因。

以下是删除按钮上的所有选中行的代码。

function removeRow() {
    // first get all sections of table which will be first section in your case
    var sections = $.table.sections;

    // perform this check to make your code error free when there are no rows added to tableview.
    if (sections.length !== 0) {
        var rows = sections[0].rows;
        var totalRows = rows.length;

        if (totalRows !== 0) {
            // now delete all rows which has uncheck=true
            for (var i=0; i<totalRows; i++) {
                var tempCurrentRow = rows[i];
                if (tempCurrentRow.hasCheck) {
                    $.table.deleteRow(tempCurrentRow);
                }
            }
        }
    }
}

只需对添加代码进行微小更改,这样就不会意外添加空标题行:

function addRow(){
   var myTextFieldValue = $.textfield.value.trim();
   if (myTextFieldValue != "") {
      $.table.appendRow( Ti.UI.createTableViewRow({title:myTextFieldValue}) );
   }
}