Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么addOnScrollListener不起作用?_Android_Android Recyclerview - Fatal编程技术网

Android 为什么addOnScrollListener不起作用?

Android 为什么addOnScrollListener不起作用?,android,android-recyclerview,Android,Android Recyclerview,当滚动到recyclerView的底部时,我尝试实现更多的加载 当我的XML只有recyclerView时,它是有效的,但当我将它放到scrollview并设置NestedScrollingEnabled(false)时,它就不起作用了 “要求” -橙色区域是静态布局 -绿色区域是动态项目 当我翻到底部时,橙色区域也必须向下滚动 mAdapter = new RecyclerViewCommentAdapter(commentList, userInformationList);

当滚动到recyclerView的底部时,我尝试实现更多的加载 当我的XML只有recyclerView时,它是有效的,但当我将它放到scrollview并设置NestedScrollingEnabled(false)时,它就不起作用了

“要求” -橙色区域是静态布局 -绿色区域是动态项目 当我翻到底部时,橙色区域也必须向下滚动

    mAdapter = new RecyclerViewCommentAdapter(commentList, userInformationList);
    mRecyclerViewComment = (RecyclerView) rootView.findViewById(R.id.recyclerViewComment);
    mRecyclerViewComment.setNestedScrollingEnabled(false);
    mRecyclerViewComment.setHasFixedSize(true);
    mRecyclerViewComment.setItemViewCacheSize(30);
    mRecyclerViewComment.setDrawingCacheEnabled(true);
    mRecyclerViewComment.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);

    mLayoutManager = new LinearLayoutManager(mContext);
    mRecyclerViewComment.setLayoutManager(mLayoutManager);
    mRecyclerViewComment.setItemAnimator(new DefaultItemAnimator());
    mRecyclerViewComment.setAdapter(mAdapter);

    // Scroll //
    mRecyclerViewComment.addOnScrollListener(new RecyclerView.OnScrollListener()
    {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy)
        {
            Log.d(getClass().getName(), "dy = " + dy);
            if(dy > 0) //check for scroll down
            {
                visibleItemCount = mLayoutManager.getChildCount();
                totalItemCount = mLayoutManager.getItemCount();
                pastVisiblesItems = mLayoutManager.findFirstVisibleItemPosition();
                Log.d(getClass().getName(), "totalItemCount = " + totalItemCount);
                if (loading)
                {

                    if ( (visibleItemCount + pastVisiblesItems) >= totalItemCount && (visibleItemCount + pastVisiblesItems) >= TOTAL_FIRST_LOAD)
                    {
                        loading = false;
                        loadMoreKey();
                    }

                }
            }
        }
    });

}

我尝试调试'dy',它总是0

dy是0,因为
RecyclerView
没有滚动,它在滚动视图中适合它的内容。因此,正在滚动的视图是
ScrollView

这不是一个特别好的实现,因为
RecyclerView
中的所有视图都同时膨胀,这与
RecyclerView
的目的不符,后者是在用户滚动并动态膨胀视图中的元素以节省内存使用时重用
viewholder


请尝试固定
RecyclerView
的高度,不要在
RecyclerView的
height
属性中使用
wrap\u content
match\u parent
,谢谢回答,那么,我应该如何使用RecyclerView实现另一个布局滚动呢?您可以分享在ScrollView中放置RecyclerView的要求吗?感谢@basilisk签出我编辑的答案从设计来看,您似乎不需要滚动视图。如果希望橙色区域与列表一起滚动,则将其添加为RecyclerView中的另一项(请参阅)。如果希望保持静态而不滚动,请将两个视图都放在线性布局中。在大多数情况下,嵌套滚动不是一个好主意。@basilisk解决了这个问题,非常感谢XD