1

我正在尝试ListView通过使用Web Service.

我设置了设置 ListViewAdapter的代码CallBack Method。但在这种情况下,适配器GetView Override method没有触发 & ListView 没有填充。

但是当我在 OnCreate(Bundle bundle) 方法中使用虚拟数据设置适配器时它可以工作。
有人知道我错过了什么吗?我需要在这里调用任何 UI 更新方法吗?

  protected List<Product> Products { get; set; }

  protected void FillProductListCallBack(List<Product> products)
   {
      if (products.Any())
      {
        Products = products;
        ProductListView = FindViewById<ListView>(Resource.Id.lstList);
        ProductListView.Adapter = new ProductScreenAdapter(this, Products);
        ProductListView.SetBackgroundColor(Color.Red);
      }
   }
4

1 回答 1

3

回调可能会从 UI 线程返回,这会导致您的问题。尝试这样做:

protected List<Product> Products { get; set; }

protected void FillProductListCallBack(List<Product> products)
{
    if (products.Any())
    {
        RunOnUiThread(() => 
        {
            Products = products;
            ProductListView = FindViewById<ListView>(Resource.Id.lstList);
            ProductListView.Adapter = new ProductScreenAdapter(this, Products);
            ProductListView.SetBackgroundColor(Color.Red);
        });
    }
}
于 2013-09-27T08:35:19.653 回答