我有一个andoird listView和listAdapter。
我想每次从服务器中获取20个项目。
您如何建议我进行有效的分页?
每当GetView返回位置10倍的项目时,我一直想到一个新的10个项目的新块。
如果用户向上滚动,我将在开始时获取10个新项目,如果用户向下滚动,则将到达10个新项目。
i虽然要使用布尔标志(isPassedNinthItem
)检测滚动方向,以了解9倍是否在当前10倍项目之前(否则是第11次项目)
任何简单的方法?
检查一些无尽的卷轴 listViews的源,基本上您要做的就是实现 onScrollListener
并加载下一个'page'(用逻辑替换,例如,如果满足所有条件:
public class EndlessScrollListener implements OnScrollListener {
private int visibleThreshold = 5;
private int currentPage = 0;
private int previousTotal = 0;
private boolean loading = true;
public EndlessScrollListener() {
}
public EndlessScrollListener(int visibleThreshold) {
this.visibleThreshold = visibleThreshold;
}
@Override
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;
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
}
源