Scroll Firebase Recyclerview внутри прокрутки до последнего вставленного элемента - PullRequest
0 голосов
/ 08 марта 2019

Я прошел через несколько решений по переполнению стека, но не смог достичь желаемого результата. У меня есть обзор переработчика для базы комментариев. Представление переработчика пожарной базы существует в представлении прокрутки, так же как и прокрутка некоторой другой части макета, также как и в обычном представлении переработчика пожарной базы. Я установил RecyclerView.setNestedScrollingEnabled(false), поэтому прокрутка может плавно прокручиваться. сейчас я могу успешно прокрутить макет, но моя проблема возникает только тогда, когда я вхожу в активность, макет показывается сверху, что-то, что я не хочу. Я хочу, чтобы представление переработчика пожарной базы или представление прокрутки отображалось из последнего элемента, который находится внизу. Также я хочу, чтобы RecyclerView автоматически прокручивал до последней позиции элемента всякий раз, когда пользователь вводит новый комментарий

Любая помощь будет оценена спасибо

Ниже мой код

код внутри существующего кода для инициализации

        replyInDetailCommentsRecyclerView = findViewById(R.id.replyInDetailCommentsRecyclerView);
    linearLayoutManager1 = new LinearLayoutManager(this);
    replyInDetailCommentsRecyclerView.setLayoutManager(linearLayoutManager1);
    replyInDetailCommentsRecyclerView.setNestedScrollingEnabled(false);

Код в обзоре Firebase, я только добавил соответствующую часть к проблеме. надеюсь, это поможет

     adapter1.startListening();
    adapter1.notifyDataSetChanged();
    adapter1.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
        @Override
        public void onItemRangeInserted(int positionStart, int itemCount) {
            super.onItemRangeInserted(positionStart, itemCount);
            int friendlyMessageCount = adapter1.getItemCount();
            int lastVisiblePosition =
                    linearLayoutManager1.findLastCompletelyVisibleItemPosition();

            if (lastVisiblePosition == -1 ||
                    (positionStart >= (friendlyMessageCount - 1) &&
                            lastVisiblePosition == (positionStart - 1))) {
                linearLayoutManager1.scrollToPosition(positionStart);
            } else {
                replyInDetailCommentsRecyclerView.scrollToPosition(adapter1.getItemCount() - 1);
            }
        }
    });


    replyInDetailCommentsRecyclerView.setAdapter(adapter1);
    adapter1.notifyDataSetChanged();

Мой код XML

   <ScrollView
    android:layout_below="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:fillViewport="true"
    android:fitsSystemWindows="true"
    android:layout_marginBottom="50dp"
    android:layout_height="match_parent">






<RelativeLayout
    android:id="@+id/RelativeLayout5"
    android:layout_width="match_parent"
    android:layout_below="@id/RelativeLayout1"
    android:layout_height="wrap_content">



<RelativeLayout
    android:id="@+id/RelativeLayout2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@id/RelativeLayout4">


    <android.support.v7.widget.RecyclerView
        android:id="@+id/replyInDetailCommentsRecyclerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">




    </android.support.v7.widget.RecyclerView>










</RelativeLayout>




<RelativeLayout
    android:id="@+id/RelativeLayout4"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">


    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/imageInDetailComments"
        android:layout_width="30dp"
        android:src="@drawable/profile"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"

        android:layout_height="30dp"/>

    <android.support.v7.widget.AppCompatTextView
        android:id="@+id/nameInDetailComments"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="14sp"
        android:textStyle="bold"
        android:layout_alignTop="@+id/imageInDetailComments"
        tools:text="Saqib"

        android:layout_toRightOf="@+id/imageInDetailComments"
        android:layout_marginLeft="5dp"

        android:textColor="#096697"
        android:layout_toEndOf="@+id/imageInDetailComments"
        android:layout_marginStart="5dp" />

    <android.support.v7.widget.AppCompatRatingBar
        android:id="@+id/ratingInDetailComments"
        style="?android:attr/ratingBarStyleSmall"
        android:layout_width="wrap_content"
        android:max="5"
        android:numStars="5"
        android:progressBackgroundTint="@color/colorAccent"

        android:progressTint="@color/colorAccent"
        android:rating="0.0"
        android:secondaryProgressTint="@color/colorAccent"
        android:stepSize="0.0"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/imageInDetailComments"
        android:layout_marginLeft="5dp"
        android:layout_below="@+id/nameInDetailComments"

        android:layout_marginStart="5dp"
        android:layout_toEndOf="@+id/imageInDetailComments" />


    <android.support.v7.widget.AppCompatTextView
        android:id="@+id/userCommentInDetailComments"
        android:layout_width="0dp"
        android:layout_below="@+id/ratingInDetailComments"
        android:layout_alignParentRight="true"
        android:layout_toRightOf="@+id/imageInDetailComments"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_marginLeft="5dp"
        android:background="#efeeee"
        android:padding="5dp"
        android:text="i can do it mate, my bidding price includes gotaskie fee"
        />



    <View
            android:layout_below="@+id/userCommentInDetailComments"
        android:layout_marginTop="8dp"
        android:id="@+id/lineAboveCommentsRecyclerView"
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="#dad8d8"

        />

</RelativeLayout>


</RelativeLayout>
</ScrollView>

1 Ответ

0 голосов
/ 08 марта 2019

Вы можете использовать NestedScrollView вместо ScrollView

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...