Search in sources :

Example 1 with ListItem

use of com.volokh.danylo.visibility_utils.items.ListItem in project VideoPlayerManager by danylovolokh.

the class SingleListViewItemActiveCalculator method bottomToTopMostVisibleItem.

private void bottomToTopMostVisibleItem(ItemsPositionGetter itemsPositionGetter, int maxVisibilityPercents, ListItemData outMostVisibleItem) {
    int mostVisibleItemVisibilityPercents = maxVisibilityPercents;
    int currentItemVisibilityPercents;
    for (int indexOfCurrentItem = itemsPositionGetter.getLastVisiblePosition(), indexOfCurrentView = itemsPositionGetter.indexOfChild(outMostVisibleItem.getView()); // iterating via listView Items
    indexOfCurrentView >= 0; indexOfCurrentItem--, indexOfCurrentView--) {
        if (SHOW_LOGS)
            Logger.v(TAG, "bottomToTopMostVisibleItem, indexOfCurrentView " + indexOfCurrentView);
        ListItem listItem = mListItems.get(indexOfCurrentItem);
        View currentView = itemsPositionGetter.getChildAt(indexOfCurrentView);
        currentItemVisibilityPercents = listItem.getVisibilityPercents(currentView);
        if (SHOW_LOGS)
            Logger.v(TAG, "bottomToTopMostVisibleItem, currentItemVisibilityPercents " + currentItemVisibilityPercents);
        if (currentItemVisibilityPercents > mostVisibleItemVisibilityPercents) {
            mostVisibleItemVisibilityPercents = currentItemVisibilityPercents;
            outMostVisibleItem.fillWithData(indexOfCurrentItem, currentView);
        }
        View currentItemView = mCurrentItem.getView();
        View mostVisibleView = outMostVisibleItem.getView();
        // set if newly found most visible view is different from previous most visible view
        boolean itemChanged = currentItemView != mostVisibleView;
        if (SHOW_LOGS)
            Logger.v(TAG, "topToBottomMostVisibleItem, itemChanged " + itemChanged);
        outMostVisibleItem.setMostVisibleItemChanged(itemChanged);
    }
    if (SHOW_LOGS)
        Logger.v(TAG, "bottomToTopMostVisibleItem, outMostVisibleItem " + outMostVisibleItem);
}
Also used : ListItem(com.volokh.danylo.visibility_utils.items.ListItem) View(android.view.View)

Example 2 with ListItem

use of com.volokh.danylo.visibility_utils.items.ListItem in project VideoPlayerManager by danylovolokh.

the class SingleListViewItemActiveCalculator method findPreviousItem.

/**
     * This method calculates visibility of previous item.
     * There are some cases when previous item cannot be filled with data:
     *
     * 1. When current data is first item in the list. in this case there is no previous data
     * 2. Index of current view cannot be calculated because view was already recycled
     *
     * @param itemsPositionGetter
     * @param currentIem - the item that is active right now
     * @param outPreviousItemData - out parameter. It will be filled with previous item data if the one exists
     */
private void findPreviousItem(ItemsPositionGetter itemsPositionGetter, ListItemData currentIem, ListItemData outPreviousItemData) {
    int previousItemVisibilityPercents = 0;
    int previousItemIndex = currentIem.getIndex() - 1;
    if (SHOW_LOGS)
        Logger.v(TAG, "findPreviousItem, previousItemIndex " + previousItemIndex);
    if (previousItemIndex >= 0) {
        int indexOfCurrentView = itemsPositionGetter.indexOfChild(currentIem.getView());
        if (SHOW_LOGS)
            Logger.v(TAG, "findPreviousItem, indexOfCurrentView " + indexOfCurrentView);
        if (indexOfCurrentView > 0) {
            View previousView = itemsPositionGetter.getChildAt(indexOfCurrentView - 1);
            ListItem previous = mListItems.get(previousItemIndex);
            if (SHOW_LOGS)
                Logger.v(TAG, "findPreviousItem, previous " + previous + ", previousView " + previousView);
            previousItemVisibilityPercents = previous.getVisibilityPercents(previousView);
            outPreviousItemData.fillWithData(previousItemIndex, previousView);
        } else {
            if (SHOW_LOGS)
                Logger.v(TAG, "findPreviousItem, current view is no longer attached to listView");
        }
    }
    if (SHOW_LOGS)
        Logger.v(TAG, "findPreviousItem, previousItemVisibilityPercents " + previousItemVisibilityPercents);
}
Also used : ListItem(com.volokh.danylo.visibility_utils.items.ListItem) View(android.view.View)

Example 3 with ListItem

use of com.volokh.danylo.visibility_utils.items.ListItem in project VideoPlayerManager by danylovolokh.

the class SingleListViewItemActiveCalculator method findNextItem.

/**
     * This method calculates visibility of next item.
     * There are some cases when next item cannot be filled with data:
     *
     * 1. When current data is last item in the list. In this case there is no next data
     * 2. Index of current view cannot be calculated because view was already recycled
     *
     * @param itemsPositionGetter
     * @param currentIem - the item that is active right now
     * @param outNextItemData - out parameter. It will be filled with next item data if the one exists
     */
private void findNextItem(ItemsPositionGetter itemsPositionGetter, ListItemData currentIem, ListItemData outNextItemData) {
    int nextItemVisibilityPercents = 0;
    int nextItemIndex = currentIem.getIndex() + 1;
    if (SHOW_LOGS)
        Logger.v(TAG, "findNextItem, nextItemIndex " + nextItemIndex);
    if (nextItemIndex < mListItems.size()) {
        int indexOfCurrentView = itemsPositionGetter.indexOfChild(currentIem.getView());
        if (SHOW_LOGS)
            Logger.v(TAG, "findNextItem, indexOfCurrentView " + indexOfCurrentView);
        if (indexOfCurrentView >= 0) {
            View nextView = itemsPositionGetter.getChildAt(indexOfCurrentView + 1);
            if (nextView != null) {
                ListItem next = mListItems.get(nextItemIndex);
                if (SHOW_LOGS)
                    Logger.v(TAG, "findNextItem, next " + next + ", nextView " + nextView);
                nextItemVisibilityPercents = next.getVisibilityPercents(nextView);
                outNextItemData.fillWithData(nextItemIndex, nextView);
            } else {
                if (SHOW_LOGS)
                    Logger.v(TAG, "findNextItem, nextView null. There is no view next to current");
            }
        } else {
            if (SHOW_LOGS)
                Logger.v(TAG, "findNextItem, current view is no longer attached to listView");
        }
    }
    if (SHOW_LOGS)
        Logger.v(TAG, "findNextItem, nextItemVisibilityPercents " + nextItemVisibilityPercents);
}
Also used : ListItem(com.volokh.danylo.visibility_utils.items.ListItem) View(android.view.View)

Example 4 with ListItem

use of com.volokh.danylo.visibility_utils.items.ListItem in project VideoPlayerManager by danylovolokh.

the class SingleListViewItemActiveCalculator method topToBottomMostVisibleItem.

private void topToBottomMostVisibleItem(ItemsPositionGetter itemsPositionGetter, int maxVisibilityPercents, ListItemData outMostVisibleItem) {
    int mostVisibleItemVisibilityPercents = maxVisibilityPercents;
    int currentItemVisibilityPercents;
    for (int indexOfCurrentItem = itemsPositionGetter.getFirstVisiblePosition(), indexOfCurrentView = itemsPositionGetter.indexOfChild(outMostVisibleItem.getView()); // iterating via listView Items
    indexOfCurrentView < itemsPositionGetter.getChildCount(); indexOfCurrentItem++, indexOfCurrentView++) {
        if (SHOW_LOGS)
            Logger.v(TAG, "topToBottomMostVisibleItem, indexOfCurrentView " + indexOfCurrentView);
        ListItem listItem = mListItems.get(indexOfCurrentItem);
        View currentView = itemsPositionGetter.getChildAt(indexOfCurrentView);
        currentItemVisibilityPercents = listItem.getVisibilityPercents(currentView);
        if (SHOW_LOGS)
            Logger.v(TAG, "topToBottomMostVisibleItem, currentItemVisibilityPercents " + currentItemVisibilityPercents);
        if (SHOW_LOGS)
            Logger.v(TAG, "topToBottomMostVisibleItem, mostVisibleItemVisibilityPercents " + mostVisibleItemVisibilityPercents);
        if (currentItemVisibilityPercents > mostVisibleItemVisibilityPercents) {
            mostVisibleItemVisibilityPercents = currentItemVisibilityPercents;
            outMostVisibleItem.fillWithData(indexOfCurrentItem, currentView);
        }
    }
    View currentItemView = mCurrentItem.getView();
    View mostVisibleView = outMostVisibleItem.getView();
    // set if newly found most visible view is different from previous most visible view
    boolean itemChanged = currentItemView != mostVisibleView;
    if (SHOW_LOGS)
        Logger.v(TAG, "topToBottomMostVisibleItem, itemChanged " + itemChanged);
    outMostVisibleItem.setMostVisibleItemChanged(itemChanged);
    if (SHOW_LOGS)
        Logger.v(TAG, "topToBottomMostVisibleItem, outMostVisibleItem index " + outMostVisibleItem.getIndex() + ", outMostVisibleItem view " + outMostVisibleItem.getView());
}
Also used : ListItem(com.volokh.danylo.visibility_utils.items.ListItem) View(android.view.View)

Aggregations

View (android.view.View)4 ListItem (com.volokh.danylo.visibility_utils.items.ListItem)4