在 Xamarin 中为 TableView 调用两个 url

Calling two urls for TableView in Xamarin

我有两个 url 可以调用以获取 json 对象并在 tableviewcontroller 中将它们制表。但是,我无法弄清楚如何创建可以处理两个不同列表实例的单个 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();

                });
            });
        }

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

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

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

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

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

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