Xamarin - 在收到数据时更新列表视图项

时间:2017-06-28 16:36:43

标签: xamarin

我有Listview需要两个API调用,一个用于所有文本数据,一个用于每个项目的图像数据(通过字节数组)。我首先获取所有文本数据并显示列表,并带有占位符图像。然后我对列表视图中的所有项目进行循环,并为每个项目检索其图像。我希望在检索到每个图片后更新Listview,这样图片就会慢慢填充到列表中,1乘1.然而,Listview只会更新为Listview项目首次显示。例如,我将加载20个项目,其中显示7个(其余项目需要滚动到)。如果我等待几秒钟并滚动,则第8个+项目将显示更新的图像。一旦所有20个项目都检索到了他们的图像,整个列表将更新并显示所有图像。

我已经尝试在检索每个图片后将列表视图的ItemSourceResults)设置为null,这会调用OnPropertyChanged(),但是列表仍然没有。 t更新每个项目。这是代码:

public async Task GetImagesForResults()
           {
             using (var scope = App.Container.BeginLifetimeScope())
             {
                    using (new Busy(this))
                   {

                    var peopleService = scope.Resolve<IPersonService>();
                    _incompleteResults = Results;

                    if (_incompleteResults != null && _incompleteResults.Count > 0)
                    {

                        foreach(PersonViewModel p in _incompleteResults)
                        {
                            if (StopLoading)
                            {
                                break;
                            }
                            IsBusy = false;
                            var peopleImage = await peopleService.GetPersonImage(p.Email);
                            if ((peopleImage.Error == null) && (peopleImage.Response != null))
                            {
                                p.Picture = peopleImage.Response;

                                p.PictureImageSource = ImageSource.FromStream(() => new MemoryStream(peopleImage.Response));
                                p.ShowInitials = false;
                                Results = null;
                                Results = _incompleteResults;
                            }

                        }
                    }
                }

            }
        }

感谢您的帮助。

0 个答案:

没有答案