我想换ListView到RecyclerView.我想使用onScroll的的OnScrollListener在RecyclerView确定用户滚动到列表的末尾.
如何知道用户是否滚动到列表末尾以便我可以从REST服务获取新数据?
android listview onscrolllistener material-design android-recyclerview
我ListView展示了一些物品.我想对当前显示在可见部分的项目执行一些操作ListView,具体取决于ListView滚动的方式; 因此我想要实现OnScrollListener的ListView.根据Android api引用,onScroll方法"将在滚动完成后调用".这似乎是我所需要的,因为一旦滚动完成,我就会对其执行操作ListView(onScroll方法返回显示的第一个项目的索引和显示的项目数).
但是一旦实现,我就会看到LogCatonScroll方法不仅在滚动完成后被触发,而且对于从滚动的开始到结束进入显示视图的每个新项目都被触发.这不是我期望的行为,也不是我需要的行为.相反,侦听器的另一个方法(onScrollStateChanged)不提供有关当前显示的项目的信息ListView.
那么,有没有人知道如何使用这两种方法来检测滚动的结尾并获取有关显示项目的信息?api引用与方法的实际行为之间的不一致使我感到困惑.提前致谢.
PS:我已经看到了一些类似的话题,但没有什么能帮助我理解整个事情的运作方式......!
这是示例XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content" android:orientation="vertical"
android:layout_margin="5dip" android:background="#FF992222">
<ScrollView android:layout_height="wrap_content"
android:layout_width="fill_parent">
<LinearLayout android:layout_height="wrap_content"
android:orientation="vertical" android:layout_width="fill_parent">
<TextView android:layout_width="wrap_content" android:text="TextView"
android:layout_height="wrap_content" android:textSize="24dip"></TextView>
</LinearLayout>
</ScrollView>
</LinearLayout>
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content" android:orientation="vertical"
android:layout_margin="5dip" android:background="#FF555555">
<TextView android:layout_width="wrap_content" android:text="TextView"
android:layout_height="wrap_content" android:textSize="24dip"></TextView>
</LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
结果是这样的:

如果您注意到,上层LinerLayout中的文本包含在LinearLayout和ScrollView中.
如果添加了上面的内容,它将如下所示

在ScrollView变为活动状态之前,底部Linearlayout将被推出屏幕,并使第一个内容变为可滚动....我不希望发生这种情况......
如何在底部视图被推出屏幕之前制作Scrollview,如下所示:
(这是编辑过的图像,不是由Android Layout编辑器创建的)

希望问题足够清楚..谢谢:)
我试图知道用户何时滚动到列表视图的顶部或底部,他不能再滚动.
现在我正在使用OnScrollListener来了解哪些listview项可见.
listview.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (totalItemCount - visibleItemCount == firstVisibleItem) {
//last item visible
}
if (firstVisibleItem == 0) {
//first item visible
}
}
});
Run Code Online (Sandbox Code Playgroud) 这似乎是一个有很多答案的问题; 但是,我找不到一个通用的方法.我正试图在ListView达到底部时添加数据; 使用数据从Internet检索数据AsyncTask.ListView已经有一个适配器连接到它.
因此,为了找到实现这一目标的好方法,我得出了两种不同的方法.
onScrollStateChanged()方法,该方法基本上与此页面相关.但是,它使用的参数在实际API中没有对应关系.同时,此链接使用正确的API,但我不知道是否以正确的方式.我尝试了两个链接中的第一个,但它有点像meh.调试应用程序,diff值变化很大,我不知道如何正确地插入表达式.另外,我不知道如何修复我可以开始检索数据的偏移量; 我的意思是,我想执行代码而不是在我即将到达底部时,而是在我到达之前.此外,即使我们滚动到顶部,有时它也会被调用.onScroll()方法,在本答案中使用,或者以不同的方式在此代码中使用.我尝试调整两个代码中的最后一个,但它会导致很多问题,即使我们没有到达列表的底部,也会加载数据.那么,最好的方法是什么?何时以及为什么我更喜欢其中一个?在我的情况下,我应该使用哪两个?
我已经为我的网格视图实现了一个刷卡刷新布局,如果我向下拉(滚动)以调用刷新,它就可以正常工作.
但是,我试图弄清楚当用户向上滚动时如何刷新.因此,当用户到达网格中的最后一个项目时(我的限制为10),所以当用户看到全部十个然后向上拉或尝试继续滚动时,我该如何刷新?
任何帮助表示赞赏.
我有listview项目超过500个产品.我需要检索数据限制50.每当我滚动时,列表必须加载到接下来的50个项目.
你的回答更受赞赏.提前致谢.