在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 中滚动时滚动出/折叠元素