如何使用android listAdapter识别滚动方向?

时间:2014-03-08 20:27:19

标签: java android list adapter

我有一个andoird ListView和一个ListAdapter。

我想每次从服务器获取20个项目的块。

您如何建议我进行有效的分页?

每当getView返回位置10X的项目时,我都想过要获取一个包含10个项目的新块。

如果用户向上滚动,我会在开头提取10个新项目,如果用户向下滚动,我会在结尾处获取10个新项目。

我虽然使用布尔标志(isPassedNinthItem)来检测滚动方向,但是知道9X是否在当前的10X项目之前(否则它是第11项)

更容易吗?

1 个答案:

答案 0 :(得分:1)

检查一些无限滚动列表视图的来源,基本上你要做的是实现一个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 &amp;&amp; (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) {
    }
}

Source