我目前正在 C# Xamarin 中构建媒体源。
媒体提要是单个帖子的数据模型的可观察集合。
我使用的 API 相当有限,所以我无法正确查询来指定我想要的数据,这意味着我最终会得到很多数据。为了确保用户真正获得足够的内容,我的集合需要请求 100 到 500 个元素之间的任何地方。
这使得加载时间非常长,我希望在从 API 检索数据的同时返回集合以不断更新媒体提要。
饲料管理器
public static async Task<ObservableCollection<PostPresenter>> GetFeed(ApiClient client, string account, int limit = 100)
{
var feed = new ObservableCollection<PostPresenter>();
var feedResult = await ApiClient.FeedClient.GetFeed(account, limit: limit);
if (feedResult != null)
{
foreach (var feedObj in feedResult.Result)
{
if (feedObj != null)
{
var comment = feedObj;
feed.Add(new PostPresenter()
{
Username = comment.Author,
Description = comment?.Title ?? comment.Body?.TruncateString(15) ?? "",
Media = comment.JsonMetadata.Image != null ? comment?.JsonMetadata?.Image.FirstOrDefault() : null,
Tags = comment?.JsonMetadata?.Tags.ToList() ?? new List<string> { "" },
PostTime = comment?.Created.ToString(),
Permlink = comment.Permlink,
EntryId = feedObj.Id
});
}
}
}
foreach (var testObj in feed)
{
await GetFeedMetadata(client, testObj);
}
return feed;
}
主页/提要页面
var tempFeedEntries = await FeedManager.GetFeed(User.ApiClient, User.Username);
//var tempFeedEntries = await FeedManager.GetAllFeedData(User.ApiClient, Feed);
if (tempFeedEntries != null)
{
foreach(var tempFeedEntry in tempFeedEntries)
{
Feed.Add(tempFeedEntry);
IsLoading = false;
FeedListViewLoading.IsRunning = false;
FeedListViewLoading.IsRunning = false;
await FeedManager.GetAllFeedData(User.ApiClient, tempFeedEntries);
FeedListView.ItemsSource = Feed;
}
}
如何在不等待加载每个元素的情况下返回集合或帖子的临时副本以填充提要?