我尝试以 xamarin 形式开发移动应用程序。我有新闻列表,我正在使用 SQLite 来存储它。当我的主页打开时,在我从 SQLite 获取新闻之前,然后我尝试从 Web API 获取新新闻。我可以在 SQLite 中保存新新闻,但我的 UI 没有改变。我该如何解决这个问题? public MainPage() { InitializeComponent(); database = new Helper.xxxDatabase(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "xxx.db3")); SetLocalDBMainNews(); Task.Run(async () => { await GetNewsAsync(); }); } void SetLocalDBMainNews() { if(database.TableExists("News")) { List<News> newsList = database.GetNewsData(); if (newsList.Count > 0) { MaiNewsList.ItemsSource = newsList.Where(x => x.Type.Equals((int)NewsType.MainNews)).OrderBy(x => x.Sort).ToList(); } } else database.CreateNewsTable(); } private async Task GetNewsAsync() { try { var register = database.GetRegisterData(); string url = "http://xxx.azurewebsites.net/api/News/GetPublishedNews"; var response = Tools.Send(url, "GET", register.Token); var result = JsonConvert.DeserializeObject<ApiResponse<List<News>>>(response); if (result.HasError == false) { var newsList = result.Value; database.DeleteAllNews(); foreach(var n in newsList) { database.Insert(n); } MaiNewsList.ItemsSource = newsList.Where(x => x.Type.Equals((int)NewsType.MainNews)).OrderBy(x => x.Sort).ToList(); } } catch{} }该代码适用于将新新闻保存到 SQLite,但我无法将新闻异步绑定到 UI。
1 回答
拉莫斯之舞
TA贡献1820条经验 获得超10个赞
UI 更改需要在 UI 线程上使用BeginInvokeOnMainThread
Device.BeginInvokeOnMainThread( () =>
{
MaiNewsList.ItemsSource = newsList.Where(x => x.Type.Equals((int)NewsType.MainNews)).OrderBy(x => x.Sort).ToList();
});
- 1 回答
- 0 关注
- 105 浏览
添加回答
举报
0/150
提交
取消