我正在为 Android 开发一个 html 应用程序,我正在尝试在列表视图中加载图像。特定于列表项的数据由多个 xml 文件提供。我正在使用 ajax 加载 xml 文件并填充列表项。我在这里面临的问题是有 164 个列表项。因此,要加载 164 个图像和 10 个 xml 文件。我的加载器函数在两次迭代后耗尽。它确实读取了 xml 文件,但它无法动态创建列表项并在两次迭代后用图像填充它们。我相信这是由于堆栈限制。我想不出替代解决方案。如果有人可以提出一个将受到高度赞赏的替代解决方案。下面是我的加载器功能。这是一个递归函数:
function loadChannels() {
$.ajax({
type: "GET",
url: curURL,
dataType: "xml",
error: function(){ console.log('Error Loading Channel XML'); },
success: function(nXml) {
var noOfItems = parseInt($($(nXml).find('total_items')[0]).text(), 10);
var startIdx = parseInt($($(nXml).find('item_startidx')[0]).text(), 10);
var allItems = $(nXml).find('item');
$(allItems).each(function() {
var obj = $("<li><span id='cont-thumb'></span><span id='cont-name'></span></li>");
$("#content-scroller ul").append($(obj));
var imgURL = $($(this).find('item_image')[0]).text();
var contThumb = $(obj).children()[0];
$(contThumb).css("background-image", 'url('+imgURL+')');
var name = $($(this).find('name')[0]).text();
var contName = $(obj).children()[1];
$(contName).text(name).css('text-align', 'center');
var url = $($(this).find('link')[0]).text();
$(obj).data('item_link', url);
$(obj).bind('click', onJPContSelected);
});
if(startIdx+allItems.length < noOfItems){
var newIdx = new Number(startIdx+allItems.length);
var tokens = curURL.split("/");
tokens[tokens.length-2] = newIdx.toString(10);
curURL = "http:/";
for(var i=2; i<tokens.length; i++)
curURL = curURL + "/" + tokens[i];
loadChannels();
}
}
});
}