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

Posted

技术标签:

【中文标题】在Android中向上滚动ListView时加载页面【英文标题】:Load page on scroll up ListView in Android 【发布时间】: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
        
    
);

【问题讨论】:

不要把同一个问题重复两次。你已经问过类似的分页问题了。 Load next and previous page on ListView Scroll in android的可能重复 【参考方案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,请告诉我

以上是关于在Android中向上滚动ListView时加载页面的主要内容,如果未能解决你的问题,请参考以下文章

Android中使用ListView实现分页刷新(线程休眠模拟)

Android - 在 ListView 中滚动时滚动出/折叠元素

Android ListView 在向下滚动时显示不正确的内容,然后在向上滚动时显示正确的内容

在 ListView 中检测向上滚动和向下滚动

在android中滚动listView时重新加载图像

在 ListView 的自定义适配器中从 URL 加载图像(Android Studio)