java - recyclerview inside nestedscrollview addOnScrollListener (endless scrolllistener)

标签 java android layout listener

我在 nestedscrollview 中使用 recyclerview,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView
    android:id="@+id/mainScrollView"
    android:layout_marginBottom="?attr/actionBarSize"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<LinearLayout
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent">

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="fill_parent"
        android:overScrollMode="never"
        android:layout_height="250dp"
        android:focusableInTouchMode="true"/>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/VerticalRV"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="0dp"/>

</LinearLayout>

</android.support.v4.widget.NestedScrollView>

问题是,当我想为这个回收器 View 设置一个监听器 (onScrollListener) 时,它无论如何都无法工作。我也调试了这段代码,但它甚至没有捕获到事件。下面是java代码:

recyclerView.setNestedScrollingEnabled(false);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(layoutManager);
MyAdapter adapter = new MyAdapter(verticalShownData, this.getActivity());
recyclerView.setAdapter(adapter);

recyclerView.addOnScrollListener(new HideShowScrollListener() {
     @Override
     public void onHide() {
          animateCallback.animateHide();
     }

     @Override
     public void onShow() {
          animateCallback.animateShow();
     }
});

我怎样才能让这个监听器工作? 提前致谢。

最佳答案

我知道这可能有点晚了,但也许这会对某人有所帮助。 我还遇到了一个问题,我的 recyclerview 在将数据插入 RecyclerView 后立即调用 RecyclerView 的 onScrolled 方法。 经过一些调试后我发现,我正在使用 NestedScrollView 和 RecyclerView。所以我搜索了一些与之相关的东西,我发现了一个很棒的 medium.com 教程 here .它工作得很好。

从此处的链接添加一些代码。

mNestedScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
    @Override
    public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
        if(v.getChildAt(v.getChildCount() - 1) != null) {
            if ((scrollY >= (v.getChildAt(v.getChildCount() - 1).getMeasuredHeight() - v.getMeasuredHeight())) &&
                    scrollY > oldScrollY) {

                int visibleItemCount = mLayoutManager.getChildCount();
                int totalItemCount = mLayoutManager.getItemCount();
                int pastVisiblesItems = mLayoutManager.findFirstVisibleItemPosition();

                if (!isLoadingData()) {

                    if ((visibleItemCount + pastVisiblesItems) >= totalItemCount) {

                         //Load Your Data
                    }
                }
            }
        }
    }
});

关于java - recyclerview inside nestedscrollview addOnScrollListener (endless scrolllistener),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45533756/

相关文章:

android - 将 .setOnTouchListener() 分配给 xml 中定义的布局

wpf - WPF中TableColumn和GridColumn的Auto和Star的区别

应用程序中的 Android xml 在模块中找不到自定义 View

android - 使用服务获取 GPS 位置,android?

安卓通知删除

Android 为 nexus 1 和 nexus 5 调用相同的布局但显示不同的设计

java - 读取一个巨大的固定宽度文件

java - 并发程序中的伪随机性

java - 编写具有公共(public)字段的 pojo 的最佳方式

java - 字符串分割后保留分隔符 "-"("-")