forms - 如何以 xamarin 形式反序列化视图模型中的对象
问题描述
我有这样的模型类,我想从视图模型中的 Listview 中线程用户数据。
public class DealMessageThreadList
{
public List<DealMessageThread> messages { get; set; }
public List<threadUsers> threadUsers { get; set; }
}
public class DealMessageThread
{
public string author { get; set; }
public string authorId { get; set; }
public DateTime createdDate { get; set; }
public string plainContent { get; set; }
public string threadId { get; set; }
}
public partial class threadUsers
{
public string name { get; set; }
public string userid_10 { get; set; }
}
public partial class threadUsers
{
public static ObservableCollection<threadUsers> FromJson(string json) => JsonConvert.DeserializeObject<ObservableCollection<threadUsers>>(json);
}
现在我想反序列化视图模型中的线程用户,以下是 ViewModel 中的方法。现在我想反序列化视图模型中的线程用户,以下是 ViewModel 中的方法。
public async Task FetchThreadUserData()
{
using (HttpClient hc = new HttpClient())
{
try
{
IsBusy = true;
var jsonString = await hc.GetStringAsync(url);
var obj = JsonConvert.DeserializeObject<DealMessageThreadList>(jsonString);
//IEnumerable<threadUsers> lstThreadUsers;
lstThreadUsers = obj.threadUsers.Select(t => new threadUsers()
{
userid_10 = t.userid_10,
name = t.name
});
//here list is itemsourse of listview
list = lstThreadUsers;
}
finally
{
IsBusy = false;
}
}
}
如何获取数据并填充到列表视图?我想在 Listview 中填充 threadUsers 数据。我创建IEnumerable<threadUsers> lstThreadUsers;
但它没有填充到列表中。
解决方案
我根据几个假设来回答这个问题:
- 您的变量
list
是类型的公共属性ObservableCollection<threadUsers>
list
已经实例化- 您已绑定
list
到一个类似于以下内容的 ListView:<ListView ItemsSource="{Binding list}">
有了这两个假设,您应该能够按如下方式更改代码。
反序列化对象后,不要创建新对象IEnumerable<treadUsers>
并将对象复制threadUsers
到其中,而是将它们复制到您的ObservableCollection
:
foreach(var user in obj.threadUsers)
list.Add(user);
由于list
是一个ObservableCollection
,它会自动通知ListView
它绑定的一个,它已经更新。
推荐阅读
- javascript - Socket.io - React:如何显示房间中连接的用户?
- python - Python 请求问题 self._store[key.lower()][1]
- java - 用递归方法填充字符串列表(递归填充方法)
- r - 无法使用 R 对数据进行分类
- c# - EPPlus 将工作表从 Workbook1 复制到 Workbook2
- python - 模型拟合/TypeError:“NoneType”对象不可调用
- php - 在 Botman studio 中获取用户信息问题
- r - 根据不同dfs的列名为列提供固定顺序
- python - 加载电子邮件:从文件传递
- binding - @State 变量通过绑定变量 SwiftUI 传递时未更新