J'ai un ListView qui obtient des données FAQ à partir d'une table SQL (après qu'il a été téléchargé à partir d'un serveur dans la base de données). Les données de la FAQ sont téléchargées et correctement enregistrées dans la base de données (les saveQQs ci-dessous indiquent les FAQ correctes et mises à jour en cas de modification sur le serveur), mais l'interface utilisateur ListView n'affiche pas les modifications. Les FAQ correctes et mises à jour s'affichent uniquement dans ListView lorsque l'application redémarre.Comment mettre à jour/synchroniser automatiquement l'interface utilisateur ListView avec la modification de la collection de base de données dans Appcelerator?
Comment la liste automatiquement peut-elle être mise à jour lorsque l'utilisateur actualise/recharge?
faqs.xml
<Collection src="faqCollection" instance="true" id="faqData"/>
.
.
<ListView id="faqListView" defaultItemTemplate="plainTemplate">
<RefreshControl id="refresh" onRefreshstart="reloadFAQs" platform="ios"/>
<Templates>
<ItemTemplate name="plainTemplate" id="plainTemplate">
<View width="98%" class="listViewRow">
<Label bindId="title" id="title"/>
</View>
</ItemTemplate>
</Templates>
<ListSection id="faqListSection" dataCollection="$.faqData" >
<ListItem title:text="{faq_title}" nid:itemId="{faq_nid}" mainText:text="{faq_text}" template="{template}"/>
</ListSection>
</ListView>
faqs.js
function autoSaveFAQs(faqs){
$.faqData.deleteAll();
console.log("faqs in autosave: " + JSON.stringify(faqs));
var f;
_.each(faqs, function(faq){
faq.time = now; //adds the timestamp when FAQs have been downloaded
f = Alloy.createModel('faqCollection', faq, {silent: true});
$.faqData.add(f);
f.save();
});
var savedFAQs = $.faqData;
savedFAQs.fetch();
console.log("savedFAQs: " + JSON.stringify(savedFAQs)); //shows the updated FAQs when reloaded, but the listview is not populated
}