在Android中向上滚动ListView时加载页面

时间:2017-12-14 09:05:41

标签: android listview android-studio scroll pagination

我正在开发一个应用程序,我想分别在ListView的上下滚动时加载上一页和下一页。我能够实现向下滚动功能并成功加载下一页但我无法在向上滚动时加载上一页。

在我的应用中,我不保存ListView项目。我只是在页面的基础上加载数据并在列表中显示。

相同的代码

listNews.setOnScrollListener(new AbsListView.OnScrollListener() {
    public void onScrollStateChanged(AbsListView view, int scrollState) {}

    private int lastVisibleItem = 0;
    private int lastY = 0;

    public void onScroll(AbsListView view, int firstVisibleItem,
                         int visibleItemCount, int totalItemCount) {

        int top = 0;
        if (view.getChildAt(0) != null) {
            top = view.getChildAt(0).getTop();
        }

        Log.e(TAG, "onScroll: " + firstVisibleItem + " " + visibleItemCount + " " + totalItemCount);

        // code for scroll down and load next page
        if (firstVisibleItem + visibleItemCount == totalItemCount && totalItemCount != 0 && !next_page_url.equals("null")) {
            callNewsApi((Integer.parseInt(currentPage) + 1) + "");
        }

        // code for scroll up and load previous page but not work
        else if (firstVisibleItem <= lastVisibleItem && !prev_page_url.equals("null")) {
            Log.e(TAG, "onScrollup: ");
            //callNewsApi((Integer.parseInt(currentPage) - 2) + "");
            //scroll up
        }
    }
});

2 个答案:

答案 0 :(得分:0)

尝试获取可见列表查看项目,并根据过去和当前可见项目,您可以确定其向上或向下滚动并实现添加页面功能。

答案 1 :(得分:0)

更改以下行

else if(firstVisibleItem <= lastVisibleItem && !prev_page_url.equals("null")){

else if(firstVisibleItem == 0 && !prev_page_url.equals("null")){

因为您可能会在代码中的某处更改lastVisibleItem值。如果它不起作用,请尝试检查!prev_page_url.equals(“null”)条件是否为真