使用ObservableCollection重新加载ListView

时间:2017-01-13 14:42:47

标签: listview xamarin observablecollection

嗨我ListView有问题。问题是,当我将新元素添加到Colletion时,视图将不会刷新。

我创建了两个按钮左右按钮,用于更改日期。该函数将进行http调用,响应是项目列表。列表中的每个项目都放入与ListView

关联的集合中

以这种方式创建ListView

var exercisesPlan = new ListView ();

exercisesPlan.ItemTemplate = new DataTemplate (() => {
    ViewCell cell = new ViewCell ();

    //template here
    return cell;
});

exercisesPlan.SetBinding (ListView.ItemsSourceProperty, new Binding ("ExercisesWorkoutPlan", BindingMode.TwoWay));
exercisesPlan.SetBinding (ListView.SelectedItemProperty, new Binding ("DailyWorkoutPlan", BindingMode.TwoWay));
exercisesPlan.RowHeight = 65;

与这两个按钮相关的功能是

//Start spinner
try
{
    DateTime dtNew = fdvm.CurrentDate.AddDays(1);

    if ((dtNew.Date - DateTime.Now.Date).Days <= 7)
    {
        await fdvm.UpdateAll(dtNew);

    }
}
//Catch Here

在UpdateAll里面我做了

ExercisesWorkoutPlan.Clear();
foreach(PlanWorkoutProfile wpPlan in wpPlans){
    var response = //Make http call

    DailyWorkout dpw = new DailyWorkout();
    dpw.PlanId = wpPlan.PlanId;
    dpw.WorkoutName = response.Result.WorkoutName;
    dpw.Exercises = response.Result.Exercises;

    ExercisesWorkoutPlan.Add(dpw);
}

如果我在UpdateAll函数的末尾设置断点,Collection ExercisesWorkoutPlan接缝就可以了,但视图将为空。它表示Clear方法有效,但Add没有

我尝试了什么

1)我试图评论我清除集合的行,并且当我通过点击左或右按钮更改日期时,我看到视图将使用上一个日期的元素进行更新

2)我试图设置null ItemsSource属性,然后在await fdvm.UpdateAll(dtNew);

之后再次分配Collection

3)我试图将fdvm.ExercisesWorkoutPlan直接分配给ItemsSource但仍无法正常工作

0 个答案:

没有答案