最近在研究Xamarin的東西,做到ListView遇到了一些瓶頸,像在數據龐大的情況下,該怎麼針對ListView中的數據分組呢? 基於能力有限的問題,暫時寫了一個只可以實現功能的臨時解決方案,畢竟,樣式和易用性啊還是有點。。。 廢話不多說,直接上代碼吧 首先我寫了一個簡單的ListView和一個 ...
最近在研究Xamarin的東西,做到ListView遇到了一些瓶頸,像在數據龐大的情況下,該怎麼針對ListView中的數據分組呢?
基於能力有限的問題,暫時寫了一個只可以實現功能的臨時解決方案,畢竟,樣式和易用性啊還是有點。。。
廢話不多說,直接上代碼吧
首先我寫了一個簡單的ListView和一個Button按鈕
<StackLayout> <ListView x:Name="listviewData"> </ListView> <Label x:Name="lblPageCount" TextColor="White"></Label> <Button Clicked="Button_OnClicked" Text="Next"/> </StackLayout>
後臺的話,只是在構造函數中加入了預設數據
public List<string> StrListData { get; set; } public int PageIndex { get; set; } //當前頁 public int PageSize { get; set; } //顯示條數 public int PageCount { get; set; } //總頁數 public int RecordCount { get; set; } //記錄的總條數 public ListTestPage() { InitializeComponent(); List<string> strList = new List<string>(); for (int i = 1; i <= 100; i++) { strList.Add("Name" + i); } StrListData = strList; PageIndex = 0; PageSize = 10; PageCount = 100; this.lblPageCount.Text = (PageIndex + 1).ToString(); List<string> strList2 = strList.GetRange(PageIndex, PageSize); this.listviewData.ItemsSource = strList2; }
因為我只是為了寫一個小例子來測試一下,所以全部都寫到一塊去了,在MVVM下應該也不會有什麼問題吧,還沒來得及測試。。
public void GetListData() { PageIndex++; int pageStart = PageIndex * PageSize; int pageEnd = (PageIndex + 1) * PageSize; this.lblPageCount.Text = (PageIndex + 1).ToString(); List<string> strList2 = StrListData.GetRange(0, pageEnd); this.listviewData.ItemsSource = strList2; } private void Button_OnClicked(object sender, EventArgs e) { GetListData(); }
然後這就是按鈕的實現方法了。
其實我就是單純的利用了ListView的GetRange。
最近還在研究更好的方法。
如果吧友有更好的方法和案例可以拿給小弟來參考一下的話,希望你們可以給我留言發一下網站demo啊案例啊什麼的,我好學習一下。
外網的也可以。
最後,謝謝大家啦~