【问题标题】:Update items in a listview in real time with Xamarin forms pcl - c #使用 Xamarin forms pcl - c # 实时更新列表视图中的项目
【发布时间】:2017-08-08 17:34:27
【问题描述】:

我的目标是实时更新记录列表视图。

在我设置的加载页面中:

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;

每 10 秒(使用 API)他们会随机更新数据,只有几条记录。 我的目标是在不刷新列表视图的情况下更新项目......并且不将 ItemSource 设置为 null,然后重新分配数据。

 public async void setSuperficie()
 {
      //here i receive the result of API (every 10 seconds) and update record listview. 
 }

我尝试使用 for 循环滑动 ItemSource 并更新数据,但不起作用。

有可能吗?

listView.ItemsSource[index].Property = Value;

【问题讨论】:

    标签: c# listview xamarin xamarin.forms itemsource


    【解决方案1】:

    什么是“我的物品”?

    你必须使用 ObservableCollection

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

    然后

     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);
     }
    

    您还应该实施 INotifyPropertyChanged。为此我建议使用Fody

    【讨论】:

    • myitems 是一个 List myitems,也许使用 observablecollection 更好?但是我如何更新列表的记录?使用您的方法,我将记录添加到列表中,但不更新。 ps.: sei Italiano ?
    • 布里安佐洛。是的,如果您必须使用 ListView 自动更新 UI,则不必使用 List,而是使用 ObservableCollection。它解决了您的 UI 的添加和删除更新问题。要更新项目(修改模型中的属性),您必须使用 INotifyPropertyChanged:更改属性的值,它会自动更新为 UI developer.xamarin.com/guides/xamarin-forms/xaml/xaml-basics/…
    猜你喜欢
    • 2022-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 2020-04-11
    • 1970-01-01
    • 2017-11-29
    • 2018-07-18
    相关资源
    最近更新 更多