@Override
 public void onScroll(
     AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
   if (externalListener != null) {
     externalListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
   }
 }
  public void onScroll(
      AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

    if (mOnScrollListener != null) {
      mOnScrollListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
    }

    if (mOnLoadMoreListener != null) {

      if (visibleItemCount == totalItemCount) {
        mProgressBarLoadMore.setVisibility(View.GONE);
        // mLabLoadMore.setVisibility(View.GONE);
        return;
      }

      boolean loadMore = firstVisibleItem + visibleItemCount >= totalItemCount;

      if (!mIsLoadingMore && loadMore && mCurrentScrollState != SCROLL_STATE_IDLE) {
        mProgressBarLoadMore.setVisibility(View.VISIBLE);
        // mLabLoadMore.setVisibility(View.VISIBLE);
        mIsLoadingMore = true;
        //                setSelection(getPositionForView(mFooterView));
        //                smoothScrollToPosition(mFooterView.getBottom());
        onLoadMore();
      }
    }
  }
 @Override
 public void onScroll(
     AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
   // send to user's listener
   if (mScrollListener != null) {
     mScrollListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
   }
 }
  @Override
  public void onScrollStateChanged(AbsListView view, int scrollState) {
    if (mScrollListener != null) {
      mScrollListener.onScrollStateChanged(view, scrollState);
    }

    mScrollState = scrollState;
  }
Exemple #5
0
 @Override
 public void onScroll(
     AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
   // 发送到用户的监听器
   mTotalItemCount = totalItemCount;
   if (mScrollListener != null) {
     mScrollListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
   }
 }
 @Override
 public void onScroll(
     AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
   if (scrollListener != null) {
     scrollListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
   }
   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {
     scrollChanged(firstVisibleItem);
   }
 }
 @Override
 public void onScroll(
     AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
   if (totalItemCount > 0) {
     refreshHeader();
   }
   if (mScrollListener != null) {
     mScrollListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
   }
 }
  public void onScrollStateChanged(AbsListView view, int scrollState) {
    mCurrentScrollState = scrollState;

    if (mCurrentScrollState == SCROLL_STATE_IDLE) {
      mBounceHack = false;
    }

    if (mOnScrollListener != null) {
      mOnScrollListener.onScrollStateChanged(view, scrollState);
    }
  }
  public final void onScrollStateChanged(final AbsListView view, final int state) {
    /** Check that the scrolling has stopped, and that the last item is visible. */
    if (state == OnScrollListener.SCROLL_STATE_IDLE
        && null != mOnLastItemVisibleListener
        && mLastItemVisible) {
      mOnLastItemVisibleListener.onLastItemVisible();
    }

    if (null != mOnScrollListener) {
      mOnScrollListener.onScrollStateChanged(view, state);
    }
  }
  @Override
  public void onScrollStateChanged(AbsListView view, int scrollState) {
    if (mScrollListener != null) {
      mScrollListener.onScrollStateChanged(view, scrollState);
    }

    if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
      if (mEnableAutoLoad && getLastVisiblePosition() == getCount() - 1) {
        startLoadMore();
      }
    }
  }
  public void onScrollStateChanged(AbsListView view, int scrollState) {

    // bug fix: listview was not clickable after scroll
    if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
      view.invalidateViews();
    }

    mCurrentScrollState = scrollState;

    if (mOnScrollListener != null) {
      mOnScrollListener.onScrollStateChanged(view, scrollState);
    }
  }
  @Override
  public void onScrollStateChanged(AbsListView view, int scrollState) {
    if (isDropDownStyle) {
      currentScrollState = scrollState;

      if (currentScrollState == SCROLL_STATE_IDLE) {
        hasReachedTop = false;
      }
    }

    if (onScrollListener != null) {
      onScrollListener.onScrollStateChanged(view, scrollState);
    }
  }
  @Override
  public final void onScroll(
      final AbsListView view,
      final int firstVisibleItem,
      final int visibleItemCount,
      final int totalItemCount) {

    if (DEBUG) {
      Log.d(
          LOG_TAG,
          "First Visible: "
              + firstVisibleItem
              + ". Visible Count: "
              + visibleItemCount
              + ". Total Items: "
              + totalItemCount);
    }

    // If we have a OnItemVisibleListener, do check...
    if (null != mOnLastItemVisibleListener) {

      // Detect whether the last visible item has changed
      final int lastVisibleItemIndex = firstVisibleItem + visibleItemCount;

      /**
       * Check that the last item has changed, we have any items, and that the last item is visible.
       * lastVisibleItemIndex is a zero-based index, so we add one to it to check against
       * totalItemCount.
       */
      if (visibleItemCount > 0 && lastVisibleItemIndex + 1 == totalItemCount) {
        if (lastVisibleItemIndex != mSavedLastVisibleIndex) {
          mSavedLastVisibleIndex = lastVisibleItemIndex;
          mOnLastItemVisibleListener.onLastItemVisible();
        }
      }
    }

    // If we're showing the indicator, check positions...
    if (getShowIndicatorInternal()) {
      updateIndicatorViewsVisibility();
    }

    // Finally call OnScrollListener if we have one
    if (null != mOnScrollListener) {
      mOnScrollListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
    }
  }
  @Override
  public void onScroll(
      AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    // When the refresh view is completely visible, change the text to say
    // "Release to refresh..." and flip the arrow drawable.
    if (refreshOn) {

      if (mCurrentScrollState == SCROLL_STATE_TOUCH_SCROLL && mRefreshState != REFRESHING) {
        if (firstVisibleItem == 0) {
          mRefreshViewImage.setVisibility(View.VISIBLE);
          if ((mRefreshView.getBottom() >= mRefreshViewHeight + 20 || mRefreshView.getTop() >= 0)
              && mRefreshState != RELEASE_TO_REFRESH) {
            mRefreshViewText.setText("Release to refresh...");
            mRefreshViewImage.clearAnimation();
            mRefreshViewImage.startAnimation(mFlipAnimation);
            mRefreshState = RELEASE_TO_REFRESH;
          } else if (mRefreshView.getBottom() < mRefreshViewHeight + 20
              && mRefreshState != PULL_TO_REFRESH) {
            mRefreshViewText.setText("Pull to refresh...");
            if (mRefreshState != TAP_TO_REFRESH) {
              mRefreshViewImage.clearAnimation();
              mRefreshViewImage.startAnimation(mReverseFlipAnimation);
            }
            mRefreshState = PULL_TO_REFRESH;
          }
        } else {
          mRefreshViewImage.setVisibility(View.GONE);
          resetHeader();
        }
      } else if (mCurrentScrollState == SCROLL_STATE_FLING
          && firstVisibleItem == 0
          && mRefreshState != REFRESHING) {
        setSelection(1);
        mBounceHack = true;
      } else if (mBounceHack && mCurrentScrollState == SCROLL_STATE_FLING) {
        setSelection(1);
      }
    }

    if (mOnScrollListener != null) {
      mOnScrollListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
    }
  }
  public final void onScroll(
      final AbsListView view,
      final int firstVisibleItem,
      final int visibleItemCount,
      final int totalItemCount) {

    if (null != mOnLastItemVisibleListener) {
      // detect if last item is visible
      if (visibleItemCount > 0 && (firstVisibleItem + visibleItemCount == totalItemCount)) {
        // only process first event
        if (firstVisibleItem != mLastSavedFirstVisibleItem) {
          mLastSavedFirstVisibleItem = firstVisibleItem;
          mOnLastItemVisibleListener.onLastItemVisible();
        }
      }
    }

    if (null != mOnScrollListener) {
      mOnScrollListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
    }
  }
 @Override
 public void onScrollStateChanged(AbsListView view, int scrollState) {
   switch (scrollState) {
     case OnScrollListener.SCROLL_STATE_IDLE:
       imageLoader.resume();
       break;
     case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
       if (pauseOnScroll) {
         imageLoader.pause();
       }
       break;
     case OnScrollListener.SCROLL_STATE_FLING:
       if (pauseOnFling) {
         imageLoader.pause();
       }
       break;
   }
   if (externalListener != null) {
     externalListener.onScrollStateChanged(view, scrollState);
   }
 }
  public final void onScroll(
      final AbsListView view,
      final int firstVisibleItem,
      final int visibleItemCount,
      final int totalItemCount) {

    if (DEBUG) {
      Log.d(
          LOG_TAG,
          "First Visible: "
              + firstVisibleItem
              + ". Visible Count: "
              + visibleItemCount
              + ". Total Items:"
              + totalItemCount);
    }

    /**
     * Set whether the Last Item is Visible. lastVisibleItemIndex is a zero-based index, so we minus
     * one totalItemCount to check
     */
    if (null != mOnLastItemVisibleListener) {
      mLastItemVisible =
          (totalItemCount > 0) && (firstVisibleItem + visibleItemCount >= totalItemCount - 1);
    }

    // If we're showing the indicator, check positions...
    if (getShowIndicatorInternal()) {
      updateIndicatorViewsVisibility();
    }

    // Finally call OnScrollListener if we have one
    if (null != mOnScrollListener) {
      mOnScrollListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
    }
  }
  @Override
  public void onScroll(
      AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    if (null != positionChangedListener && null != scrollBarPanel) {

      // Don't do anything if there is no itemviews
      if (totalItemCount > 0) {
        /*
         * from android source code (ScrollBarDrawable.java)
         */
        final int thickness = getVerticalScrollbarWidth();
        int height =
            Math.round(
                (float) getMeasuredHeight()
                    * computeVerticalScrollExtent()
                    / computeVerticalScrollRange());
        int thumbOffset =
            Math.round(
                (float) (getMeasuredHeight() - height)
                    * computeVerticalScrollOffset()
                    / (computeVerticalScrollRange() - computeVerticalScrollExtent()));
        final int minLength = thickness * 2;
        if (height < minLength) {
          height = minLength;
        }
        thumbOffset += height / 2;

        /*
         * find out which itemviews the center of thumb is on
         */
        final int count = getChildCount() - getFooterViewsCount();
        for (int i = 0; i < count; ++i) {
          final View childView = getChildAt(i);
          if (childView != null) {
            if (thumbOffset > childView.getTop() && thumbOffset < childView.getBottom()) {
              if (lastPosition != firstVisibleItem + i) {
                lastPosition = firstVisibleItem + i;

                positionChangedListener.onPositionChanged(this, lastPosition, scrollBarPanel);

                measureChild(scrollBarPanel, widthMeasureSpec, heightMeasureSpec);
              }
              break;
            }
          }
        }

        scrollBarPanelPosition = thumbOffset - scrollBarPanel.getMeasuredHeight() / 2;
        final int x =
            getMeasuredWidth() - scrollBarPanel.getMeasuredWidth() - getVerticalScrollbarWidth();
        scrollBarPanel.layout(
            x,
            scrollBarPanelPosition,
            x + scrollBarPanel.getMeasuredWidth(),
            scrollBarPanelPosition + scrollBarPanel.getMeasuredHeight());
      }
    }

    if (onScrollListener != null) {
      onScrollListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
    }
  }
 @Override
 public final void onScrollStateChanged(final AbsListView view, final int scrollState) {
   if (null != mOnScrollListener) {
     mOnScrollListener.onScrollStateChanged(view, scrollState);
   }
 }
  @Override
  public void onScroll(
      AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    if (isDropDownStyle) {
      if (currentScrollState == SCROLL_STATE_TOUCH_SCROLL
          && currentHeaderStatus != HEADER_STATUS_LOADING) {
        /**
         * when state of ListView is SCROLL_STATE_TOUCH_SCROLL(ListView is scrolling and finger is
         * on screen) and header status is not HEADER_STATUS_LOADING
         *
         * <ul>
         *   if header layout is visiable,
         *   <li>if height of header is higher than a fixed value, then set header status to
         *       HEADER_STATUS_RELEASE_TO_LOAD.
         *   <li>else set header status to HEADER_STATUS_DROP_DOWN_TO_LOAD.
         * </ul>
         *
         * <ul>
         *   if header layout is not visiable,
         *   <li>set header status to HEADER_STATUS_CLICK_TO_LOAD.
         * </ul>
         */
        if (firstVisibleItem == 0) {
          headerImage.setVisibility(View.VISIBLE);
          int pointBottom = headerOriginalHeight + headerReleaseMinDistance;
          if (headerLayout.getBottom() >= pointBottom) {
            setHeaderStatusReleaseToLoad();
          } else if (headerLayout.getBottom() < pointBottom) {
            setHeaderStatusDropDownToLoad();
          }
        } else {
          setHeaderStatusClickToLoad();
        }
      } else if (currentScrollState == SCROLL_STATE_FLING
          && firstVisibleItem == 0
          && currentHeaderStatus != HEADER_STATUS_LOADING) {
        /**
         * when state of ListView is SCROLL_STATE_FLING(ListView is scrolling but finger has leave
         * screen) and first item(header layout) is visible and header status is not
         * HEADER_STATUS_LOADING, then hide first item, set second item visible and set
         * hasReachedTop true.
         */
        setSecondPositionVisible();
        hasReachedTop = true;
      } else if (currentScrollState == SCROLL_STATE_FLING && hasReachedTop) {
        /**
         * when state of ListView is SCROLL_STATE_FLING(ListView is scrolling but finger has leave
         * screen) and hasReachedTop is true(it's because flick back), then hide first item, set
         * second item visible.
         */
        setSecondPositionVisible();
      }
    }

    // if isOnBottomStyle and isAutoLoadOnBottom and hasMore, then call
    // onBottom function auto
    if (isOnBottomStyle && isAutoLoadOnBottom && hasMore) {
      if (firstVisibleItem > 0
          && totalItemCount > 0
          && (firstVisibleItem + visibleItemCount == totalItemCount)) {
        onBottom();
      }
    }
    if (onScrollListener != null) {
      onScrollListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
    }
  }