danylovolokh/VideoPlayerManager

I modified the calculateActiveItem method and the calculateMostVisibleItem method.

JakePrim opened this issue · 0 comments

I modified the calculateActiveItem method and the calculateMostVisibleItem method.
I think the call to the deactivate method should destroy the previous call to the deactivate method on the next display, which is more logical.

` private void calculateActiveItem(ItemsPositionGetter itemsPositionGetter, ListItemData listItemData) {
/** 1. */
int currentItemVisibilityPercents = listItemData.getVisibilityPercents(mListItems);
if (SHOW_LOGS) Logger.v(TAG, "calculateActiveItem, mScrollDirection " + mScrollDirection);

    /** 2. */
    ListItemData neighbourItemData = new ListItemData();
    switch (mScrollDirection) {
        case UP:
            findPreviousItem(itemsPositionGetter, listItemData, neighbourItemData);
            break;
        case DOWN:
            findNextItem(itemsPositionGetter, listItemData, neighbourItemData);
            break;
    }
    if (SHOW_LOGS)
        Logger.v(TAG, "calculateActiveItem, currentItemVisibilityPercents " + currentItemVisibilityPercents);

    /** 3. */
    if (enoughPercentsForDeactivation(currentItemVisibilityPercents) && neighbourItemData.isAvailable()) {

        // neighbour item become active (current)
        if (mOldItem == null) {
            mOldItem = mCurrentItem;
        } else {
            mCallback.deactivateCurrentItem(mListItems.get(mOldItem.getIndex()), mOldItem.getView(), mOldItem.getIndex());
            mOldItem = mCurrentItem;
        }
        /** 4. */
        setCurrentItem(neighbourItemData);
    } else {
        calculateMostVisibleItem(itemsPositionGetter, itemsPositionGetter.getFirstVisiblePosition(),
                itemsPositionGetter.getLastVisiblePosition());
    }
}`