ProductListTracker.java 文件源码

java
阅读 68 收藏 0 点赞 0 评论 0

项目:webtrekk-android-sdk 作者:
/**
 * Register Recycler view for product list tracking. Please call {@link #unregisterView(RecyclerView)}
 * after RecyclerView is hided
 * @param view RecyclerView instance
 * @param timeoutMilliseconds timeout that is used when list is scrolled. Position of product
 * is tracked if list has this delay after scrolling or first show-up
 * @param itemCallback - callback to provide information about product
 */

public void registerView(@NonNull RecyclerView view, @IntRange(from=0) final long timeoutMilliseconds, @NonNull final ProductListItemCallback itemCallback){

    final RecyclerView.LayoutManager layoutManager = view.getLayoutManager();
    //we not support others layout managers then LinearLayoutManager
    if (!(layoutManager instanceof LinearLayoutManager)) {
        WebtrekkLogging.log("Error: not LinearLayouManager isn't supported");
        return;
    }

    mDelayHandler = new Handler();
    mScrollListener = new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {

            if (newState == RecyclerView.SCROLL_STATE_IDLE){
                initPendingList(recyclerView, timeoutMilliseconds, itemCallback);
            }else{
                clearPendingEvents();
            }
        }

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            //it equals zero on the first list start in that case start pending
            if (dy == 0){
                initPendingList(recyclerView, timeoutMilliseconds, itemCallback);
            }
        }
    };

    view.addOnScrollListener(mScrollListener);

    mOnTouсhEventListener = new RecyclerItemClickListener(view.getContext(), view);
    view.addOnItemTouchListener(mOnTouсhEventListener);
    initPendingList(view, timeoutMilliseconds, itemCallback);
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号