2016-05-04 53 views
0

我正在使用Xamarin Forms的最後一個穩定版本在PCL中工作。目前,目標平臺是Android。Xamarin表單 - 在使用HTTP POST請求結果更新UI之後滯後ScrollView

首先,我從我的HTTP POST請求得到的結果工作得很好。

然後,當我嘗試更新UI時,顯示結果的滾動視圖在向下滾動時滯後。

我認爲這可能是一個線程問題:UI的更新可能不會在正確的線程中執行。我試過使用Device.BeginInvokeOnMainThread(() => { //Update the UI });,但它不起作用。

感謝。

+0

當你正在更新和滾動時,它是滯後**嗎?或者**項目更新後,它是否滯後**?更新前的滾動滯後? –

+0

我保留了一個空的stacklayout來顯示結果。我按下一個按鈕,項目正確顯示,然後當我嘗試滾動時,它是滯後的。之後。 – Rodney

+0

有多少項? –

回答

0

下面是我的一些代碼,以幫助我們:

主要方法:

private async void Search() { 

    ResponseService results = await libSearch.getResults(this.searchEntry.Text); 

    if (results.error != true) { 
     List<Choice> list = (List<Choice>)results.obj; 

     if(list.Count != 0) { 

     foreach(Choice choice in list) {          

      Device.BeginInvokeOnMainThread(() => { 
       addNewChoice(choice);         
      }); 

      } 

     } 
    } 

AddNewChoice方法:

private void addNewChoiceOnUI(Choice choice) {    

    ChoiceTemplate Choice = new ChoiceTemplate(choice.name, choice.img, choice.address);       

    this.Choices.Children.Add(Choice);    
} 

Web Service調用方法似乎上班。它看起來像這樣:

public async Task<ResponseService> getResults(string zipcode) { 

(...) 

     JObject results = await JsonWebRequest.getDataFromService(queryString).ConfigureAwait(false); 

(...) 

正如你所看到的,我使用的是等待對Web服務調用方法和唯一的主要方法。我也在使用Web服務調用方法使用ConfigureAwait(false);。我已經嘗試了很多解決方案如果我們能找到避免滯後的解決方案,我將非常感激。