问题描述
im使用第一次使用appcelerator作为iPhone应用程序,即我使用tableviewrow,当窗口加载都很好时,但是如果我想刷新窗口,则每次我按刷新时,tableviewrow重复相同的数据,所以,我有5个类别,在刷新IM之后,每次试图刷新时都重复相同的类别.
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();
推荐答案
按下"刷新"按钮清除tabledata数组并分配给表格数据功能,然后再填充表.因此,它将首先清空您的表格,而不是填写新的刷新数据.
这样,
refreshBtn.addEventListener('click', function() { tableData = []; table.setData(tableData); 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();
推荐答案
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(); });