2013-09-27 67 views
1

正試圖通過使用Web Service加載數據來填充ListView

而我設置代碼爲CallBack Method設置ListView Adapter。但是在這種情況下,適配器GetView Override method未觸發& ListView未填充。
在回撥方法中設置適配器時,未填充Xamerin Android 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); 
     } 
    } 

回答

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); 
     }); 
    } 
} 
+0

它的工作原理!非常感謝chees。 :-) – asitis