我有两个url来调用json对象并将它们列表在tableviewcontroller中。但是,我无法弄清楚如何创建一个可以处理两个不同List实例的TableSource。
public void Inbox()
{
var ts= new TableSource(this);
TableView.Source=ts;
var client1 = new RestClient ("MyURL");
client1.Authenticator = new HttpBasicAuthenticator ("admin", "admin");
var request1 = new RestRequest ("MYURL/x/y");
request1.AddHeader ("Accept", "application/json");
request1.AddHeader ("Content-Type", "application/json");
var client2 = new RestClient ("MyURL");
client2.Authenticator = new HttpBasicAuthenticator ("admin", "admin");
var request2 = new RestRequest ("MYURL/a/b");
request2.AddHeader ("Accept", "application/json");
request2.AddHeader ("Content-Type", "application/json");
client1.ExecuteAsync (request1, response1 => {
aTasks = Newtonsoft.Json.JsonConvert.DeserializeObject<List<HTask>> (response1.Content);
InvokeOnMainThread (() => {
ts.Data1= aTasks;
TableView.ReloadData();
});
});
client2.ExecuteAsync (request2, response2 => {
bTasks = Newtonsoft.Json.JsonConvert.DeserializeObject<List<HTask>> (response2.Content);
InvokeOnMainThread (() => {
ts.Data2= bTasks;
TableView.ReloadData();
});
});
}
答案 0 :(得分:0)
创建TableSource并在创建TableView时分配它。不是在构造函数中传递数据,而是为您正在使用的两个不同数据集创建两个公共属性。
var ts = new TableSource(this);
TableView.Source = ts;
稍后,您已加载数据,更新现有的TableSource
ts.Data1 = aTasks;
TableView.ReloadData();
加载第二组数据时,再次更新现有的TableSource
ts.Data2 = bTasks;
TableView.ReloadData();