android recyclerview удаляет все предметы, конфликтующие с украшением предметов первого предмета - PullRequest
0 голосов
/ 18 февраля 2020

чтобы удалить все элементы из recyclerview , я использую следующий код:

    int size = recyclerViewAdapter.getItemCount();
    recyclerViewAdapter.clearList();
    recyclerViewAdapter.notifyItemRangeRemoved(0, size);

представление переработчика использует следующую ItemDecoration:

public class CollectionsDecoration extends RecyclerView.ItemDecoration {
    private int margin;

    public CollectionsDecoration(Context context) {
        margin = MeasurementsComputer.getPX(5, context);
    }

    @Override
    public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
        super.getItemOffsets(outRect, view, parent, state);

        outRect.left = 0;
        outRect.right = 0;
        outRect.bottom = 0;
        if (parent.getChildAdapterPosition(view) == 0)
            outRect.top = 15 * margin;
        else
            outRect.top = 0;
    }
}

Как видите, первый элемент имеет большее верхнее поле. проблема в том, что когда я запускаю приведенный выше код для удаления всех элементов, все элементы, включая первый элемент, получают верхнее поле, равное нулю, а затем удаляются и скрываются. почему при удалении не учитывается оформление первого предмета?

1 Ответ

0 голосов
/ 18 февраля 2020

Если я правильно понимаю, вы хотите сохранить украшение предметов при удалении всех предметов? В этом случае вы можете попробовать добавить отдельное представление сверху, а когда список пуст, установите его видимость View.VISIBLE, а когда список не пуст, установите его в View.INVISIBLE.

Пример пользовательского представления в качестве декоратора:


    <View
            android:id="@+id/dividerView"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#E3E4E5" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...