notifyDataSetChanged () заставил другой свиток просмотра реселлера сбросить - PullRequest
0 голосов
/ 18 января 2019

У меня очень странная проблема.У меня есть 2 обзора переработчиков (просмотр переработчиков № 1 с горизонтальной прокруткой и просмотр повторов № 2).Когда я вызывал notifyDataSetChanged() из адаптера для recyclerview # 2, он сбрасывает прокрутку в recyclerview # 1.

<LinearLayout android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical">
    <android.support.v7.widget.RecyclerView android:id="@+id/recyclerview1"
                                            android:layout_width="match_parent"
                                            android:layout_height="wrap_content"
                                            android:scrollbars="horizontal" />
    <LinearLayout android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:layout_marginTop="8dp">
        <TextView android:text="Selected: "
                  style="@style/ProdGroupLabel" />
        <TextView android:text="@{prod.name}"
                  android:maxEms="12"
                  style="@style/ProdGroupLabel" />
        <Button android:id="@+id/buttonedit"
                android:text="Edit"
                android:visibility="@{menu.hasOptions ? View.VISIBLE : View.INVISIBLE}"
                style="@style/ProdGroupButtonEdit"/>
    </LinearLayout>

    <android.support.v7.widget.RecyclerView android:id="@+id/recyclerview2"
                                            android:layout_width="match_parent"
                                            android:layout_height="wrap_content"
                                            android:visibility="@{menu.hasOptions ? View.VISIBLE : View.GONE}" />
</LinearLayout>

Так я инициализировал мой адаптер

recyclerview1.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false));
recyclerview1.addItemDecoration(new SpaceItemDecoration(context, R.dimen.horz_spacing));
recyclerview1.setAdapter(productRecyclerAdapter);
recyclerview1.setHasFixedSize(true);

recyclerview2.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false));
recyclerview2.setAdapter(productOptionRecyclerAdapter);
recyclerview2.setHasFixedSize(true);

Когда пользователь выбираетпродукт обновит позиции productOptionRecyclerAdapter, чтобы отразить доступные опции для этого продукта.В productOptionRecyclerAdapter, когда источник изменился, я вызвал notifyDataSetChanged().

Проблема в том, что каждый раз, когда notifyDataSetChanged() вызывается в productOptionRecyclerAdapter, он прокручивает recyclerview1 в положение (0,0),Но recyclerview1 не имеет ничего общего с productOptionRecyclerAdapter.(И да, если я закомментировал notifyDataSetChanged() в productOptionRecyclerAdapter, тогда полоса прокрутки не будет сброшена.)

Есть идеи почему?

...