Google アナリティクス拡張 e コマースを使用して、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 を使用してみましたが、成功しませんでした。
編集:これはビューページャーで使用されるフラグメント内にあるため、アイテムが追加されるだけでなく、いつ実際に表示されるかを知る必要があります。
ありがとうございました