'Scroll to first element in the RecyclerView after adding a new item

I want when insert a new item at the first element and after notifyItemInsered it should scroll to the recently item added. It add the element to the first with success but recyclerView.scrollTo(); is not working.

Note: The recyclerView has a setNestedScrollView to false.

I tried to do this:

newsNestedScrollView.smoothScrollTo(newsCommentTitle.getScrollX(), newsCommentTitle.getScrollY());

But it doesn't work probably.

my xml layout:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/news_details_footer_background_color"
    android:focusableInTouchMode="true">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/news_details_app_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:elevation="6dp">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/news_details_collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="280dp"
            android:fitsSystemWindows="true"
            app:contentScrim="?colorPrimary"
            app:expandedTitleTextAppearance="@android:color/darker_gray"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <ImageView
                android:id="@+id/news_details_main_image"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="centerCrop"
                app:layout_collapseMode="parallax"
                tools:src="@mipmap/news7_header_bg" />

            <View
                android:layout_width="match_parent"
                android:layout_height="140dp"
                android:layout_gravity="top"
                android:background="@drawable/scrim_up_to_down" />

            <View
                android:layout_width="match_parent"
                android:layout_height="140dp"
                android:layout_gravity="bottom"
                android:background="@drawable/scrim_down_to_up" />

            <TextView
                android:id="@+id/news_details_title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom"
                android:layout_marginLeft="@dimen/spacing_large"
                android:layout_marginTop="@dimen/spacing_large"
                android:layout_marginRight="@dimen/spacing_large"
                android:layout_marginBottom="@dimen/spacing_xlarge"
                android:textColor="@android:color/white"
                android:textSize="20sp"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                tools:text="Google AI Defeats Human Go Champion" />

            <TextView
                android:id="@+id/news_details_time"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom|center_horizontal"
                android:layout_marginLeft="@dimen/spacing_large"
                android:layout_marginRight="@dimen/spacing_large"
                android:layout_marginBottom="@dimen/spacing_regular"
                android:textColor="@android:color/white"
                tools:text="15 min" />

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="fill_parent"
                android:layout_height="?actionBarSize"
                app:layout_collapseMode="pin"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

        </android.support.design.widget.CollapsingToolbarLayout>

    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView
        android:id="@+id/news_details_nested_scroll"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/spacing_huge"
        android:background="@color/colorWhite"
        android:fillViewport="true"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">
        <!--android:layout_marginBottom="56dp"-->

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:orientation="vertical">

            <TextView
                android:id="@+id/news_details_description"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:lineSpacingExtra="@dimen/spacing_middle"
                android:padding="@dimen/spacing_large"
                android:textSize="20sp"
                android:textStyle="bold"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                tools:text="sdkjsdfkjsdfjdfsk sfdjkfdsjsfk djfdsk sfdjk lfdjf dskjf fjjfdsfdj sdjkfl sdfdsklj sdfjklsfd" />

            <WebView
                android:id="@+id/news_details_content"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_margin="@dimen/spacing_regular"
                android:lineSpacingExtra="@dimen/spacing_middle"
                android:textSize="18sp"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toBottomOf="@+id/news_details_description"
                app:layout_constraintVertical_chainStyle="packed" />

            <!--<TextView-->
            <!--android:id="@+id/news_details_content"-->
            <!--android:layout_width="match_parent"-->
            <!--android:layout_height="wrap_content"-->
            <!--android:layout_marginEnd="16dp"-->
            <!--android:layout_marginTop="24dp"-->
            <!--android:layout_marginStart="16dp"-->
            <!--android:text="aasdkjasdkljasdklj k aksdjlkd klasjd kj dkajs kj das kjasklds klj as"-->
            <!--android:textSize="16sp"-->
            <!--app:layout_constraintEnd_toEndOf="parent"-->
            <!--app:layout_constraintTop_toBottomOf="@id/textView2"-->
            <!--app:layout_constraintStart_toStartOf="parent"-->
            <!--/>-->

            <!--<ImageView-->
            <!--android:id="@+id/imageVideo"-->
            <!--android:layout_width="0dp"-->
            <!--android:layout_height="200dp"-->
            <!--android:scaleType="centerCrop"-->
            <!--android:layout_marginTop="24dp"-->
            <!--android:src="@drawable/bg_polygon"-->
            <!--app:layout_constraintDimensionRatio="w,15:9"-->
            <!--app:layout_constraintEnd_toEndOf="parent"-->
            <!--app:layout_constraintHorizontal_bias="0.545"-->
            <!--app:layout_constraintStart_toStartOf="parent"-->
            <!--app:layout_constraintTop_toBottomOf="@id/news_details_content" />-->

            <!--<ImageView-->
            <!--android:layout_width="wrap_content"-->
            <!--android:layout_height="25dp"-->
            <!--app:layout_constraintBottom_toBottomOf="@id/imageVideo"-->
            <!--app:layout_constraintEnd_toEndOf="@id/imageVideo"-->
            <!--app:layout_constraintStart_toStartOf="@id/imageVideo"-->
            <!--app:layout_constraintTop_toTopOf="@id/imageVideo"-->
            <!--app:srcCompat="@drawable/ic_playback" />-->

            <!--<TextView-->
            <!--android:id="@+id/textView5"-->
            <!--android:layout_width="match_parent"-->
            <!--android:layout_height="wrap_content"-->
            <!--android:layout_margin="16dp"-->
            <!--android:text="asdl;asd asdkl;asd d askd;lask dask ;laksd lk"-->
            <!--android:textSize="16sp"-->
            <!--app:layout_constraintEnd_toEndOf="parent"-->
            <!--app:layout_constraintStart_toStartOf="parent"-->
            <!--app:layout_constraintTop_toBottomOf="@id/imageVideo"-->
            <!--/>-->

            <View
                android:id="@+id/above_comments_separator"
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:layout_marginTop="@dimen/spacing_large"
                android:background="@android:color/darker_gray"
                app:layout_constraintTop_toBottomOf="@id/news_details_content" />

            <TextView
                android:id="@+id/news_details_comments_title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/spacing_large"
                tools:text="Comment (3)"
                android:textSize="18sp"
                android:textStyle="bold"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@id/above_comments_separator" />

            <android.support.v7.widget.RecyclerView
                android:id="@+id/news_details_recycler_view"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_alignParentStart="true"
                android:layout_marginTop="@dimen/spacing_large"
                android:layout_marginBottom="@dimen/spacing_mlarge"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@id/news_details_comments_title"
                />

            <include
                android:id="@+id/news_details_load_more_progress_bar"
                layout="@layout/layout_progress_bar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/spacing_regular"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@id/news_details_recycler_view" />

        </android.support.constraint.ConstraintLayout>

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

    <RelativeLayout
        android:id="@+id/news_details_add_comment_section"
        android:layout_width="match_parent"
        android:layout_height="@dimen/spacing_huge"
        android:layout_gravity="bottom"
        android:background="@color/news_details_footer_background_color"
        android:focusableInTouchMode="true"
        android:visibility="visible">

        <android.support.design.widget.TextInputEditText
            android:id="@+id/news_details_comment_input"
            style="@style/NewsDetailsInput"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_centerVertical="true"
            android:layout_toStartOf="@+id/news_details_add_comment_button"
            android:gravity="center_vertical"
            android:hint="@string/write_comment_hint"
            android:inputType="text"
            android:padding="12dp" />

        <ImageButton
            android:id="@+id/news_details_add_comment_button"
            android:layout_width="@dimen/spacing_huge"
            android:layout_height="match_parent"
            android:layout_alignParentEnd="true"
            android:layout_centerVertical="true"
            android:background="@android:color/transparent"
            android:foreground="?selectableItemBackgroundBorderless"
            android:textColor="@color/colorAccent"
            app:srcCompat="@drawable/ic_send" />

        <Button
            android:id="@+id/news_details_edit_comment_button"
            android:layout_width="@dimen/spacing_huge"
            android:layout_height="match_parent"
            android:layout_alignParentEnd="true"
            android:layout_centerVertical="true"
            android:background="@android:color/transparent"
            android:foreground="?selectableItemBackground"
            android:textColor="@color/colorAccent"
            android:textAllCaps="true"
            android:text="@string/edit_button"
            android:visibility="gone"
            />

        <TextView
            android:id="@+id/news_details_sign_error"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:text="@string/comment_user_error"
            android:background="@color/news_details_footer_background_color"
            android:visibility="gone"
            android:textSize="12sp"
            />

    </RelativeLayout>

    <include
        android:id="@+id/news_details_included_error"
        layout="@layout/layout_error"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:visibility="gone" />

    <com.wang.avi.AVLoadingIndicatorView
        android:id="@+id/news_details_progress_bar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:visibility="gone"
        app:indicatorColor="@color/colorPrimary" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/news_details_share_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_marginBottom="@dimen/spacing_mhuge"
        android:visibility="gone"
        app:fabSize="normal"
        app:srcCompat="@drawable/ic_share" />

       </android.support.design.widget.CoordinatorLayout>


Solution 1:[1]

you may have to use this:

linearLayoutManager.scrollToPositionWithOffset(pos, 0);

or take a look here

Solution 2:[2]

You can try this:

mRecyclerView.smoothScrollToPosition(0);

Solution 3:[3]

That is because probably when you call scroll to the position, adapter is not yet updated, so it does scroll to first position, but since adapter is not updated it looks like nothing happend. You can try:

mRecyclerView.postDelayed( {
    mRecyclerView.smoothScrollToPosition(0)
}, 100)

If you give main thread a little time(100ms) to process the data in adapter and than call it, it should work.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Igor Romcy
Solution 2 Hossein Golshani
Solution 3 Torima