Titanium Appcelerator(Alloy):我想从表视图中添加和删除

Titanium Appcelerator (Alloy): I want to add and delete from tableview

当我在 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;
        }

    }

如果您正确遵循 Appc 文档,这将非常简单:

查询 1 的答案:

有个活动叫 return for TextField proxies which is called when you press Done button or Return button on iOS or Android. But the title of this Return button can be anything as specified here: Return Key Title

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

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


查询 2 的答案:

您必须从 table 中获取所有行,这有点冗长,因为您不能直接从 TableView 中获取行,而您首先需要获取 TableView 的第一部分,然后从该部分获取行。

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

这是在单击删除按钮时删除所有 checked-rows 的代码。

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}) );
   }
}