问题描述
我想以 xamarin 形式实现分页,实际上我还没有为任何移动应用程序做过这个,所以这是我第一次。我正在使用 collection view 和 remainingItemThreshold 并且正在触发事件但没有添加项目。我认为这是一个很好的逻辑,但我认为我错过了一些东西。提前致谢!
private async void Init()
{
SetViews();
Methods.SetFlowDirection(this);
Methods.BeforeChecking(activityIndicator,parent);
GetordersApiResponse response = await OrdersPageLogic.Getorders();
Methods.AfterChecking(activityIndicator,parent);
//
// get all orders
orders = response.Orders;
toRange = orders.Count >= pagination ? pagination : orders.Count;
// only show first 10 items
ordersToShow = orders.GetRange(0,toRange);
// remove fetched items
orders.RemoveRange(0,toRange);
ordersCollView.ItemsSource = ordersToShow;
ordersCollView.RemainingItemsThreshold = 2;
ordersCollView.RemainingItemsThresholdReached += (s,e) => ordersCollView_RemainingItemsThresholdReached(s,e);
}
private void ordersCollView_RemainingItemsThresholdReached(object s,EventArgs e)
{
int count = 0;
int to = 0;
if (orders.Count == 0)
return;
to = pagination >= orders.Count ? orders.Count : pagination;
foreach(var order in orders.GetRange(0,to))
{
if (count == pagination)
break;
ordersToShow.Add(order);
count++;
}
// remove fetched items
orders.RemoveRange(0,to);
}
解决方法
所以感谢@Jason,似乎项目源(在我的情况下 ordersToShow)必须是可观察集合而不是列表