Quelqu'un peut-il s'il vous plaît me dire comment ajouter un tableau de vues en utilisant une boucle for à une vue défilement dans android. Les réponses que j'ai surfées en ligne ne me donnent pas une idée claire et sont trop confuses. Aucune suggestion?Ajouter des vues en utilisant pour la boucle à la vue déroulante dans Appcelerator
Répondre
Vous avez (au moins) deux options. Si vous avez beaucoup de travail pour chaque élément de la liste (par exemple, afficher une vignette pour une image), alors vous pouvez utiliser la deuxième approche. Sinon, vous pouvez simplement utiliser cette approche simple (où je montre des statistiques pour un certain nombre d'espèces - mise en page contrôlée dans un contrôleur séparé). stats
ma liste:
function showSpecies(stats) {
_.each(stats, function(record){
$.form.add(Alloy.createController('viewStatsRow', {record:record}).getView());
});
}
Dans cet exemple, j'ai plus de travail en cours pour « construction » tous les éléments. Donc, pour éviter de bloquer le fil que j'utilise une liste comme une « file d'attente » et gère tout le premier élément - puis appeler la fonction avec la liste restante jusqu'à ce qu'il soit vide:
var work = [];
function showNextItem(work,first){
if(work && work.length > 0){
// Progressively show list....
if($.boastList && $.boastList.sections[0]){
var list = [];
list.push(buildOneItem(work.shift())); // Take first element
if(first){
$.boastList.sections[0].items = list; // Replace list
}else{
$.boastList.sections[0].appendItems(list); // append item
}
// Free queue to allow other actions
setTimeout(function(){
showNextItem(work); // Call recursively...
},30);
}
}else{
// All boasts shown...
}
}
function showBoastlist(){
work = [];
DataFactory.boasts.find({}, {$sort:{sortTime:-1}}, function(result){
result.forEach(function(record) {
work.push(record);
});
});
showNextItem(work,true);
}
La fonction buildOneItem
retourne juste un élément prêt à être ajouté à la vue.
Je ne sais pas si c'était ce que vous avez demandé - mais espérons que vous pouvez l'utiliser ;-)
Bonne programmation!
/John