0

検索結果の最後に表示したいボタンがあります。そのために、テーブルの行に「filter」プロパティを追加しました。私が必要としているのは、検索バーに何を入力しても、その行を呼び出す方法 (例: フィルター マッチ) です。何らかの形のワイルドカードが必要になると思います。いくつかの調査を行いましたが、単にワイルドカードを示しているものは見つかりませんでした。私が得た結果のほとんどは、正規表現を使用しているようです。それで、これを行うことは可能ですか?

search : Ti.UI.createSearchBar({
        barColor : '#666',
        height : '45dp',
        top : 0,
        showCancel : false
    }),
    filterAttribute : 'filter',
//Above is from the Table code, below is the row's code.
var buttonRow = Ti.UI.createTableViewRow({
        backgroundImage : $$.components.RowBG,
        selectionStyle : 'none',
        height : '60dp',
                filter : 'I NEED THIS FILTER TO RETURN NO MATTER WHAT IS INPUTTED IN SEARCH'
    });
4

1 に答える 1

0

ワイルドカードを使用してそれを行う方法はわかりませんが、最後の行の「フィルター」属性を検索値と同じになるように動的に変更できます。

var data = ['oranges', 'grapes', 'lemons', 'kiwi', 'apples', 'limes'];

var rows = [];

for (var i = 0; i < data.length; i++) {
    var row = Ti.UI.createTableViewRow({
        title : data[i],
        filter : data[i]
    });
    rows.push(row);
}

var magicRow = Ti.UI.createTableViewRow({
    title : 'I am always here',
    filter : 'set by code'
});
rows.push(magicRow);

var search = Titanium.UI.createSearchBar({
    barColor : '#000',
    showCancel : true,
    height : 43,
    top : 0,
});

search.addEventListener('change', function(e) {
    // Set the last row filter to the current search value
    magicRow.filter = e.source.value;//
    //table.updateRow(rows.length - 1, magicRow,{animationStyle:Ti.UI.iPhone.RowAnimationStyle.NONE}); <- Should work but flickers
    // setting the data seems to work better
    table.data = rows;
});

var table = Ti.UI.createTableView({
    data : rows,
    filterAttribute : 'filter',
    search : search
});

これは、Titanium SDK 2.0.1.GA2 を使用して iOS でテストされました。

于 2012-06-29T22:13:06.637 に答える