2017-03-17 1 views
1

Mon but est de faire la mise à jour d'une liste des enregistrements en temps réel.Mettre à jour des éléments dans une liste en temps réel avec les formulaires Xamarin pcl - C#

dans la page de chargement i Set:

List<Myobjetcs> myitems = new List<Myobjects>(); 

... 
... 
     listView.IsVisible = false; 
     listView.RowHeight = 55; 
     listView.IsPullToRefreshEnabled = true; 
     listView.Refreshing += ListView_Refreshing; 
     listView.ItemTapped += ListView_ItemTapped; 
     listView.SeparatorVisibility = SeparatorVisibility.None; 
     listView.SeparatorColor = Color.Black; 
     listView.ItemsSource = myitems; 

toutes les 10 secondes (avec l'API), ils mettront à jour les données, seulement quelques enregistrements, au hasard. Mon but est de mettre à jour l'élément sans actualiser le listview ... et sans que le ItemSource ne soit défini sur null, puis réaffecte les données. J'ai essayé de faire glisser le ItemSource avec une boucle for et mettre à jour les données, mais ne fonctionne pas.

c'est possibile faire?

listView.ItemsSource[index].Property = Value; 

Répondre

1

Qu'est-ce que c'est «myitems»?

Vous devez utiliser un ObservableCollection

ObservableCollection<MyModel> myitems = new ObservableCollection<MyModel>(); 

puis

public async void setSuperficie() 
{ 
     //here i receive the result of API (every 10 seconds) and update record listview. 
     // here you have to modify the myitems collection, adding or removing items 
     myitems.add(mynewitem); 
} 

vous devriez également implemente INotifyPropertyChanged. Pour cela, je suggère d'utiliser Fody

+1

myitems est une liste myitems, peut-être mieux utiliser observablecollection? mais comment je mettre à jour le dossier de la liste? Avec votre méthode, j'ajoute l'enregistrement sur la liste, mais pas de mise à jour. ps .: sei Italiano? –

+1

Brianzolo. Oui, si vous devez mettre à jour automatiquement une interface utilisateur avec ListView, vous n'avez pas besoin d'utiliser List mais ObservableCollection. Il résout les problèmes de mise à jour de votre interface utilisateur pour Ajouter et Supprimer. Pour mettre à jour un élément (modifier une propriété dans votre modèle), vous devez utiliser INotifyPropertyChanged: en changeant la valeur de la propriété, il est automatiquement mis à jour vers l'interface utilisateur https://developer.xamarin.com/guides/xamarin-forms/xaml/xaml-basics/data_binding_basics / –