刷新后不要追加相同的数据

发布于 2024-12-18 05:01:25 字数 4068 浏览 3 评论 0原文

我第一次在Iphone应用程序中使用appcelerator,我使用TableViewRow,当窗口加载时一切都很好,但是如果我想刷新窗口,TableViewRow每次我推动刷新时都会重复相同的数据,所以,我有5 个类别,刷新后,每次尝试刷新时都会重复相同的类别。

Ti.UI.backgroundColor = '#dddddd';

var url = "http://remoteJSON.js";
var win = Titanium.UI.currentWindow;
var table = Titanium.UI.createTableView();
var tableData = [];
var json, categorias, categoria, i, row, categoriaLabel, descripcionLabel;

var refreshBtn = Titanium.UI.createButton({
    systemButton: Ti.UI.iPhone.SystemButton.REFRESH
});

refreshBtn.addEventListener('click', function() {
    loadTutoriales();
});

win.setRightNavButton(refreshBtn);


var actInd = Titanium.UI.createActivityIndicator({
    bottom:10, 
    height:50,
    width:10,
    style:Titanium.UI.iPhone.ActivityIndicatorStyle.PLAIN
});

function loadTutoriales(){

    if(!Titanium.Network.online){
         alert("Debe conectarse a internet.");
    } 

    var xhr = Ti.Network.createHTTPClient({

        onload: function() {
        actInd.show();
        actInd.message = 'Loading...'; 


        //Ti.API.debug(this.responseText);

        json = JSON.parse(this.responseText);
        for (i = 0; i < json.categorias.length; i++) {

                var rowColor = '#eeeeee';
                if(i & 1){
                    rowColor = '#ffffff';
                }


                categoria = json.categorias[i];

                var row = Ti.UI.createTableViewRow({
                    height:'auto',
                    hasChild:true
                });

                row.backgroundColor=rowColor;


                /* add */
                var post_view = Titanium.UI.createView({
                        height:'auto', 
                        layout:'vertical',
                        top:5,
                        right:5,
                 bottom:5,
                 left:5
            });

                var av_image = Titanium.UI.createImageView({
                        image:categoria.imageUrl, 
                        top:0,
                        left:0,
                        height:48,
                        width:48
                });
                post_view.add(av_image);

                var inner_view = Titanium.UI.createView({
                    height:'auto',
                    layout:'vertical', 
                    top:0,          
                    right:0,
                    bottom:0,
                    left:0
                });

               /* end add */

                var categoriaLabel = Ti.UI.createLabel({
                    text:categoria.categoryName,
                    left:54,
                    width:120,
                    top:-48,
                    bottom:0,
                    height:18,
                    textAlign:'left',
                    color:'#444444',
                    font:{fontFamily:'Trebuchet MS',fontSize:14,fontWeight:'bold'}
                });
                inner_view.add(categoriaLabel);

                var descripcionLabel = Ti.UI.createLabel({
                    text:'"' + categoria.description + '"',
                    left:54,
                    top:0,
                    bottom:2,
                    height:'auto', 
                    width:'auto',
                    textAlign:'left',
                    font:{fontSize:14}
                });
                inner_view.add(descripcionLabel);
                post_view.add(inner_view);

                row.add(post_view);
                //row.add(descripcionLabel);
                tableData.push(row);
            }

            table.setData(tableData); 
        },
        onerror: function(e) {
            Ti.API.debug("STATUS: " + this.status);
            Ti.API.debug("TEXT:   " + this.responseText);
            Ti.API.debug("ERROR:  " + e.error);
            alert('There was an error retrieving the remote data. Try again.');
        },
        timeout:5000

    });

        //win.add(actInd);
    win.add(table);
    win.open();
        //actInd.hide();
    xhr.open("GET", url);
    xhr.send();
}
loadTutoriales();

im using for first time appcelerator for a Iphone app, im using a TableViewRow, when the window load all is fine, but if i want to refresh the window, the TableViewRow repeat the same data every time that i push refresh, so, i have 5 Categories, after refresh im having the same Categories repeting every time that im trying to refresh.

Ti.UI.backgroundColor = '#dddddd';

var url = "http://remoteJSON.js";
var win = Titanium.UI.currentWindow;
var table = Titanium.UI.createTableView();
var tableData = [];
var json, categorias, categoria, i, row, categoriaLabel, descripcionLabel;

var refreshBtn = Titanium.UI.createButton({
    systemButton: Ti.UI.iPhone.SystemButton.REFRESH
});

refreshBtn.addEventListener('click', function() {
    loadTutoriales();
});

win.setRightNavButton(refreshBtn);


var actInd = Titanium.UI.createActivityIndicator({
    bottom:10, 
    height:50,
    width:10,
    style:Titanium.UI.iPhone.ActivityIndicatorStyle.PLAIN
});

function loadTutoriales(){

    if(!Titanium.Network.online){
         alert("Debe conectarse a internet.");
    } 

    var xhr = Ti.Network.createHTTPClient({

        onload: function() {
        actInd.show();
        actInd.message = 'Loading...'; 


        //Ti.API.debug(this.responseText);

        json = JSON.parse(this.responseText);
        for (i = 0; i < json.categorias.length; i++) {

                var rowColor = '#eeeeee';
                if(i & 1){
                    rowColor = '#ffffff';
                }


                categoria = json.categorias[i];

                var row = Ti.UI.createTableViewRow({
                    height:'auto',
                    hasChild:true
                });

                row.backgroundColor=rowColor;


                /* add */
                var post_view = Titanium.UI.createView({
                        height:'auto', 
                        layout:'vertical',
                        top:5,
                        right:5,
                 bottom:5,
                 left:5
            });

                var av_image = Titanium.UI.createImageView({
                        image:categoria.imageUrl, 
                        top:0,
                        left:0,
                        height:48,
                        width:48
                });
                post_view.add(av_image);

                var inner_view = Titanium.UI.createView({
                    height:'auto',
                    layout:'vertical', 
                    top:0,          
                    right:0,
                    bottom:0,
                    left:0
                });

               /* end add */

                var categoriaLabel = Ti.UI.createLabel({
                    text:categoria.categoryName,
                    left:54,
                    width:120,
                    top:-48,
                    bottom:0,
                    height:18,
                    textAlign:'left',
                    color:'#444444',
                    font:{fontFamily:'Trebuchet MS',fontSize:14,fontWeight:'bold'}
                });
                inner_view.add(categoriaLabel);

                var descripcionLabel = Ti.UI.createLabel({
                    text:'"' + categoria.description + '"',
                    left:54,
                    top:0,
                    bottom:2,
                    height:'auto', 
                    width:'auto',
                    textAlign:'left',
                    font:{fontSize:14}
                });
                inner_view.add(descripcionLabel);
                post_view.add(inner_view);

                row.add(post_view);
                //row.add(descripcionLabel);
                tableData.push(row);
            }

            table.setData(tableData); 
        },
        onerror: function(e) {
            Ti.API.debug("STATUS: " + this.status);
            Ti.API.debug("TEXT:   " + this.responseText);
            Ti.API.debug("ERROR:  " + e.error);
            alert('There was an error retrieving the remote data. Try again.');
        },
        timeout:5000

    });

        //win.add(actInd);
    win.add(table);
    win.open();
        //actInd.hide();
    xhr.open("GET", url);
    xhr.send();
}
loadTutoriales();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟酒忠诚 2024-12-25 05:01:25

当您按下刷新按钮时,会清除 tableData 数组并分配给表集数据函数,然后再次填充表。因此,它将首先清空您的表,然后填充新的刷新数据。

像这样,

refreshBtn.addEventListener('click', function() {
    tableData = [];
    table.setData(tableData);
    loadTutoriales();
});

When you press the refresh button clear the tableData array and assign to table set data function before you fill your table again. So it will empty your table first and than fill new refreshed data.

Like this,

refreshBtn.addEventListener('click', function() {
    tableData = [];
    table.setData(tableData);
    loadTutoriales();
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文