Прокрутите вложенный RecyclerView программно до позиции - PullRequest
3 голосов
/ 24 октября 2019

Я знаю, как программно прокрутить обзор переработчика на определенную позицию. Но моя проблема заключается в том, что у меня есть окно повторного просмотра с вертикальным linearLayout, в котором есть еще один дочерний план повторного просмотра в каждой строке. Теперь, когда я прокручиваю родительский просмотрщик заново программно, он не прокручивается до заданной позиции. Но если удалить из него дочерний рециклер-просмотр, он прокручивается без проблем. Это то, что я пробовал, и все работало для одного просмотра переработчика, не имеющего дочернего просмотра переработчика в своих строках.

card_recyclerView.getLayoutManager().scrollToPosition(position)
card_recyclerView.smoothScrollToPosition(position);
card_recyclerView.getLayoutManager().scrollToPositionWithOffset(position, 20);

Мой основной просмотр переработчика

<androidx.recyclerview.widget.RecyclerView
                            android:id="@+id/card_recyclerView"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginRight="5dp"
                            android:clipToPadding="false"
                            android:layout_marginLeft="5dp"
                            android:background="#ffffff"
                            android:layout_weight="1"
                            />

Основной элемент строки просмотра переработчика

                            <androidx.recyclerview.widget.RecyclerView
                            android:id="@+id/cards_recycler_adapter"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_below="@+id/layout_see_more_top"/>

1 Ответ

1 голос
/ 24 октября 2019

Я только что создал ваш вид без проблем. Мне удалось прокрутить только с

card_recyclerView.getLayoutManager().scrollToPosition(position)
card_recyclerView.smoothScrollToPosition(position);

. Это мой код для видоискателя первого адаптера:

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    ViewHolder(View itemView) {
        super(itemView);
        RecyclerView recyclerView = itemView.findViewById(R.id.recyclerView2);
        recyclerView.setAdapter(new TestAdapter2(itemView.getContext(), mData));
        GridLayoutManager linearLayoutManager = new GridLayoutManager(itemView.getContext(), 3);
        recyclerView.setLayoutManager(linearLayoutManager);
    }
}

Если у вас все еще есть проблемы, пожалуйста, предоставьте код для адаптеров и, возможно, XMLдля рядов.

...