【问题标题】:Load page on scroll up ListView in Android在Android中向上滚动ListView时加载页面
【发布时间】:2018-05-28 07:36:10
【问题描述】:

我正在开发一个应用程序,我想分别在 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
        }
    }
});

【问题讨论】:

标签: android listview android-studio scroll pagination


【解决方案1】:

尝试获取可见列表View items,根据过去和现在可见的item判断它是向上还是向下滚动,实现你的添加页面功能。

【讨论】:

    【解决方案2】:

    更改下面的行

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

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

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

    【讨论】:

    • 如果我使用这个条件,那么它会一次又一次地点击 api,因为 firstVisibleItem 是 0 很多次
    • 您还可以使用 pull 刷新侦听器来防止此问题,该问题将解决此问题并适用于过度滚动列表视图
    • 否则,如果您不想创建 swipeRefresh,您可以创建自己的线性布局,如果您想创建 1,请告诉我
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    相关资源
    最近更新 更多