簡體   English   中英

Xamarin.forms 下載數據后刷新輪播視圖

[英]Xamarin forms refresh carouselview after dowloading data

我在學習xamarin,

每次下載數據時,我都試圖刷新我的 carouselView。

數據已正確下載,但問題是當我下載新數據時,我想在我的 carrouselView 上交換以查看上一次數據下載后的新數據。

輪播“移動”並將我定位在我之前的 position(索引),即使我想在每次數據下載時成為 position(索引)0 上的 position

如何正確刷新輪播視圖?

這是我的代碼 CS:

try
        {

        // trying to refresh by renitializing my carouselView
        Device.BeginInvokeOnMainThread(() =>
        {
            NewsList.Position = 0;
            NewsList.ItemsSource = null;
          
           
        });

            
        // Perform the Web request and get the response
        HttpWebResponse response = (HttpWebResponse)request.GetResponseAsync().Result;

        // Data Downloaded
        string json = new StreamReader(response.GetResponseStream()).ReadToEnd();
        JObject joResponse = JObject.Parse(json);
        JArray MyJsonResult = (JArray)joResponse["value"];



          List<NewsModel> newsObj = new List<NewsModel>();
             
                foreach (var j in MyJsonResult)
            {

                    joResponse2 = JObject.Parse(j.ToString());

                    if (joResponse2["image"]!= null)
                    {
                        

                        var news = new NewsModel();
                        news.NewsName = GetFewWordsSentence(joResponse2["name"].ToString()) ;
                        news.NewsDate = joResponse2["datePublished"].ToString();
                        news.NewsImageUrl = joResponse2["image"]["contentUrl"].ToString(); 
                        newsObj.Add(news);

                     // feed my carouselView in the loop for performance
                       // I have already try, to put this line out of the loop but it is not refresh correctly also
                    Device.BeginInvokeOnMainThread(() =>
                    {
                        NewsList.ItemsSource = newsObj;

                   });


                }
               
                }

                    
    }


    catch (Exception e)
    {
        Console.Error.WriteLine(@"ERROR {0}", e.Message);

    }

提前致謝

輪播“移動”並將我定位在我之前的 position(索引),即使我想在每次數據下載時成為 position(索引)0 上的 position

根據你的描述,你下載數據顯示CarouselView,然后你在position中的任意一個item換成CarouselView。你想顯示新數據和go到position 0再下載數據,我說的對嗎?

如果是的話,我建議你可以先用observablecollection來代替List,它實現了INotifyPropertychanged接口來通知數據更新的時候。

  public ObservableCollection<NewsModel> newsObj { get; set; }

然后再次下載數據時清除數據,

 newsObj.Clear();

使用 ScrollTo 將指定索引處的項目滾動到視圖中。

 Device.BeginInvokeOnMainThread(()=>
        {
            newsList.ScrollTo(0);
        }
        ) ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM