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