【问题标题】:items not showing in mvxlistviewmvxlistview 中未显示的项目
【发布时间】:2013-08-11 08:33:08
【问题描述】:

我正在使用 mvvmcross(非常有趣),但在从 mvxlistview 添加和删除项目时一直遇到问题:

我的视图绑定到从网络服务器检索的项目列表,因此它在不同的线程中完成:

async void  ActivateSearchInvoked ()
    {
        _activeSearchViewModel.IsLoading = true;
        await _activeSearchViewModel.Search (SearchString);
        _activeSearchViewModel.IsLoading = false;
    }   

Search 是一个调用 InnerSearch 的方法,这里是 View Model 中的代码

protected override Task InnerSearch ()
    {
        Users.Clear ();
        return Task.Factory.StartNew (SearchForUsers);
    }

    protected virtual void SearchForUsers()
    {
        int requestringUserID = AppConfiguration.Instance.User.ID;
        List<User> users = GetUsersFromWeb();
        if(users == null)
        {
            return;
        }
        foreach (var item in users)
        {
            Users.Add (new UserViewModel (item));
        }
        RaisePropertyChanged (() => Users);
    }

这似乎无法正常工作,直到屏幕被刷新(例如旋转它)我错过了什么?

谢谢

阿米特

【问题讨论】:

  • 不确定。但我认为RaisePropertyChanged 需要在 UI 线程上完成,我不记得该方法是否在内部完成,但尝试自己包装它。

标签: xamarin.android mvvmcross


【解决方案1】:

除非您实际使用不同的源 List 或 INotifyCollectionChanged 支持集合,否则 MvxAdapter 将收到您的更改通知 - 但实际上不会知道它有任何工作要做。

为了解决这个问题,要么:

【讨论】:

  • 我不敢相信我错过了 ObservableCollection .....我没有意识到它也可用:(
猜你喜欢
  • 1970-01-01
  • 2015-05-21
  • 2014-12-08
  • 2014-05-16
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 2019-09-09
  • 2017-01-11
相关资源
最近更新 更多