Узнайте, когда элементы RecyclerView показываются впервые (Android)

Я пытаюсь использовать Google Analytics Enhanced Ecommerce, чтобы отправлять "показы" моих продуктов в RecyclerView StaggeredGrid. Каждый раз, когда пользователь прокручивает, я проверяю, какие продукты видны, и отправляю Хит:

public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
    super.onScrollStateChanged(recyclerView, newState);

    if (newState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
        for (int i = firstVisibleItemPosition; i <= lastVisibleItemPosition; i++) {
            Offer offer = mListViewContentFetcher.getApiObjects().get(i);

            Product product = new Product()
                .setId(offer.getCode())
                .setName(offer.getTitle())
                .setCategory(offer.getStore().getName())
                .setPosition(i);

            builder.addImpression(product, "products_list");
        }

        mTracker.setScreenName("Products List");
        mTracker.send(builder.build());
    }
}

Но мне также нужно запустить это, когда RecyclerView создается впервые и первые продукты видны.

Как я могу узнать, что первые предметы готовы? Я пытался с помощью ViewTreeObserver на просмотрщик и onBindViewHolder безуспешно.

Редактировать: это внутри фрагмента, который используется в viewpager, поэтому мне нужно знать, когда элементы действительно видны, а не только добавлены.

Спасибо

1 ответ

Решение

Разве вы не можете использовать методы onViewAttachedToWindow и onViewDetachedFromWindow вашего RecyclerView.Adapter для отслеживания того, когда что-то приходит / выходит из поля зрения?

Другие вопросы по тегам