了解RecyclerView项目何时首次展示(Android)

我正在尝试使用Google Analytics增强型电子商务在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并且第一批产品可见时,我还需要运行它.

我怎么知道第一件物品准备好了?
我尝试在recyclerview和onBindViewHolder上使用ViewTreeObserver但没有成功.

编辑:这是在viewpager上使用的片段内部,因此我需要知道项目何时真正可见,而不仅仅是添加.

谢谢

解决方法:

难道您不能使用RecyclerView.Adapter的onViewAttachedToWindowonViewDetachedFromWindow方法来跟踪事物何时进入/离开视图?

上一篇:avalon使用ms-visible出现重叠的问题


下一篇:黑科技!两行代码完美解决:同时设置overflow-x:hidden,overflow-y:visible无效的问题