任何人都可以帮助我了解xamarin.android中listview滚动时如何实现分页处理。任何链接或任何示例都将有所帮助
答案 0 :(得分:0)
与iOS相比,Android分页非常简单,可以按以下步骤进行操作:
public class EndlessScrollListener : Java.Lang.Object, Android.Widget.AbsListView.IOnScrollListener
{
private int visibleThreshold = 5;
private int currentPage = 0;
private int previousTotal = 0;
private bool loading = true;
public EndlessScrollListener()
{
}
public EndlessScrollListener(int visibleThreshold)
{
this.visibleThreshold = visibleThreshold;
}
public void OnScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
{
if (loading)
{
if (totalItemCount > previousTotal)
{
loading = false;
previousTotal = totalItemCount;
currentPage++;
}
}
if (!loading && (totalItemCount - visibleItemCount) <= (firstVisibleItem + visibleThreshold))
{
// I load the next page of gigs using a background task,
// but you can call any function here.
//new LoadGigsTask().execute(currentPage + 1);
loading = true;
}
}
public void OnScrollStateChanged(AbsListView view, [GeneratedEnum] ScrollState scrollState)
{
// throw new NotImplementedException();
}
}
然后将其设置为列表视图,如下所示:
List.SetOnScrollListener(new EndlessScrollListener());
工作代码:
接下来,我们有几个构造函数,允许我们根据需要设置内联的visibleThreshold。
每次滚动列表时,都会调用我们拥有的第一个重写方法。在滚动过程中,这种情况每秒发生很多次,因此请注意此处放置的代码。我们提供了一些有用的参数来帮助我们确定是否需要加载更多数据,但是首先,我们检查是否正在等待之前的加载完成。
如果仍在加载,我们将检查数据集计数是否已更改,如果已更改,则可以得出结论,它已完成加载并更新当前页码和项目总数。
如果当前未加载,请检查是否违反了visibleThreshold并需要重新加载更多数据。如果确实需要重新加载更多数据,则执行后台任务并将加载标志设置为true。从而永远解决问题!
我们不需要该类中的最后一个方法,但是,如果您感兴趣的话,它主要用于通过scrollState参数来跟踪滚动动作本身的变化。
最后,调用该类的代码将创建一个EndlessScrollListener的新实例,并将其绑定到我的ListView。当然,将您自己的ListView代替List。