最近在研究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啊案例啊什么的,我好學習一下。
外網的也可以。
最后,謝謝大家啦~
