Android Recycler视图滚动到底部

时间:2018-02-19 00:08:34

标签: android android-recyclerview

我正在尝试将回收器视图滚动到底部,但问题是如果我的行项目高度大于滚动停止在项目顶部的屏幕高度。是否可以手动滚动到回收站视图的最底部?

recyclerView.scrollToPosition(adapter.getItemCount()-1); // does not work

3 个答案:

答案 0 :(得分:0)

此解决方案可行,

添加 NestedScrollView 作为父级,

即,在您的Xml中

<android.support.v4.widget.NestedScrollView
 android:id="@+id/nsView"
 android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true">

<android.support.v4.widget.SwipeRefreshLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            >
  <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</android.support.v4.widget.SwipeRefreshLayout>
 </android.support.v4.widget.NestedScrollView>

现在在Java类中,在将数据添加到recyclerview之后,使NestedScrollView滚动到底部。

<强> nsView.fullScroll(View.FOCUS_DOWN);

希望,它可以帮到你。

答案 1 :(得分:0)

在java中,实际列表是基于零的。例如。 list [0,1,2]的大小为3,但最后一个位置是2,因为它以0开头。

public class BinaryTreeNode<T extends Comparable<T>>
{
    ...

    public T findMax(BinaryTreeNode<T> root) {
        T max = null;
        if(root == null) {
            return null;
        } else {
            T left = findMax(root.left);
            T right = findMax(root.right);

            max = left.compareTo(right) <= 0 ? right : left;
            if(max.compareTo(root.getData()) < 0) {
                max = root.getData();
            }
            return max;
        }
    }

    ...
}

答案 2 :(得分:0)

它适合你。在 LayoutManager 中使用setReverseLayout=true并将其设置为 recylcerView

final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
    linearLayoutManager.setReverseLayout(true);

    recyclerView.setLayoutManager(linearLayoutManager);