android - 如何在scrollview中使用recycleview的OnScrollListener

时间:2016-08-24 15:03:54

标签: android android-recyclerview android-scrollview

我需要在scrollview中使用recycleview。我使用这个但是我有一个问题,我需要使用OnScrollListener和我的recycleview来获取新数据,当用户到达recyleview结束时,这个问题是,当我在scrollview中使用recyleview时它没有被调用。

这是我的代码:

<ScrollView
            android:id="@+id/scrollview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

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

                <cn.trinea.android.view.autoscrollviewpager.AutoScrollViewPager
                    android:id="@+id/pager"
                    android:layout_width="match_parent"
                    android:layout_height="170dp" />

                <FrameLayout
                    android:id="@+id/fragment_container"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />
            </LinearLayout>
        </ScrollView>

我有一个frameLayout,它返回我的片段,片段包含一个recycleview。

这是我的java代码,但它只是调用一次而不是在滚动recyeleview时再次调用:

ads.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            Log.v("this","Scroll");
            visibleItemCount = ads.getChildCount();
            totalItemCount = mLayoutManager.getItemCount();
            firstVisibleItem = mLayoutManager.findFirstVisibleItemPosition();

            if (loadmore) {
                if (totalItemCount > previousTotal) {
                    previousTotal = totalItemCount;
                }
            }
            if ((totalItemCount - visibleItemCount)
                    <= (firstVisibleItem + visibleThreshold)) {
                if (taskrunning != null && taskrunning == false && loadmore) {
                    loadmore = false;
                    page = page + 1;
                    new AsyncHttpTask(1).execute(url);
                }

            }
        }

    });

我该如何解决这个问题?

0 个答案:

没有答案