在Xamarin中为TableView调用两个URL

时间:2015-02-06 17:53:00

标签: xamarin

我有两个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();

                });
            });
        }

1 个答案:

答案 0 :(得分:0)

创建TableSource并在创建TableView时分配它。不是在构造函数中传递数据,而是为您正在使用的两个不同数据集创建两个公共属性。

var ts = new TableSource(this);
TableView.Source = ts;

稍后,您已加载数据,更新现有的TableSource

ts.Data1 = aTasks;
TableView.ReloadData();

加载第二组数据时,再次更新现有的TableSource

ts.Data2 = bTasks;
TableView.ReloadData();