android.widget.AbsListView#getChildAt ( )源码实例Demo

下面列出了android.widget.AbsListView#getChildAt ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
	if (view.getCount() == 0) {
		return;
	}
	switch (scrollState) {
		case SCROLL_STATE_IDLE: {
			mListScrollStarted = false;
			break;
		}
		case SCROLL_STATE_TOUCH_SCROLL: {
			final View firstChild = view.getChildAt(0);
			mFirstVisibleItem = view.getFirstVisiblePosition();
			mFirstVisibleTop = firstChild.getTop();
			mFirstVisibleBottom = firstChild.getBottom();
			mFirstVisibleHeight = firstChild.getHeight();
			mListScrollStarted = true;
			mTotalScrollDistance = 0;
			break;
		}
	}
}
 
源代码2 项目: RefreashTabView   文件: MainActivity.java
/**
 * 主要算这玩意,PullToRefreshListView插入了一个刷新头部,因此要根据不同的情况计算当前的偏移量</br>
 * <p/>
 * 当刷新时: 刷新头部显示,因此偏移量要加上刷新头的数值 未刷新时: 偏移量不计算头部。
 * <p/>
 * firstVisiblePosition >1时,listview中的项开始显示,姑且认为每一项等高来计算偏移量(其实只要显示一个项,向上偏移
 * 量已经大于头部的最大偏移量,因此不准确也没有关系)
 *
 * @param view
 * @return
 */
public int getScrollY(AbsListView view) {
    View c = view.getChildAt(0);
    if (c == null) {
        return 0;
    }
    int top = c.getTop();
    int firstVisiblePosition = view.getFirstVisiblePosition();
    if (firstVisiblePosition == 0) {
        return -top + headerScrollSize;
    } else if (firstVisiblePosition == 1) {
        return -top;
    } else {
        return -top + (firstVisiblePosition - 2) * c.getHeight() + headerHeight;
    }
}
 
源代码3 项目: UltimateAndroid   文件: ContextualUndoAdapter.java
private ContextualUndoView getContextualUndoView(final long dismissViewItemId) {
    ContextualUndoView contextualUndoView = null;

    AbsListView listView = getAbsListView();
    int childCount = listView.getChildCount();
    for (int i = 0; i < childCount; i++) {
        View child = listView.getChildAt(i);
        if (child instanceof ContextualUndoView) {
            ContextualUndoView listItem = (ContextualUndoView) child;
            if (listItem.getItemId() == dismissViewItemId) {
                contextualUndoView = listItem;
            }
        }
    }
    return contextualUndoView;
}
 
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    final View topChild = view.getChildAt(0);
    int firstViewTop = 0;
    if (topChild != null) {
        firstViewTop = topChild.getTop();
    }
    boolean goingDown;
    boolean changed = true;
    if (mPrevPosition == firstVisibleItem) {
        final int topDelta = mPrevTop - firstViewTop;
        goingDown = firstViewTop < mPrevTop;
        changed = Math.abs(topDelta) > DIRECTION_CHANGE_THRESHOLD;
    } else {
        goingDown = firstVisibleItem > mPrevPosition;
    }
    if (changed && mUpdated) {
        if (mFloatingView != null)
            mFloatingView.hide(goingDown);
    }
    mPrevPosition = firstVisibleItem;
    mPrevTop = firstViewTop;
    mUpdated = true;
}
 
源代码5 项目: YiBo   文件: StatusScrollListener.java
private void displayImage(AbsListView listView) {
	int firstPos = listView.getFirstVisiblePosition();
	int lastPos = listView.getLastVisiblePosition();
	int totalCount = lastPos - firstPos + 1;
	
	Log.v(TAG, "滚动停止加载图片..");
	for (int i = 0; i < totalCount; i++) {
		View view = listView.getChildAt(i);
		Object tag = view.getTag();
	    if (!(tag instanceof StatusHolder)) {
	    	continue;
	    }
	    
	    StatusHolder holder = (StatusHolder)view.getTag();
	    ImageLoad4ThumbnailTask thumbnailTask = holder.thumbnailTask;
	    if (thumbnailTask != null 
	    	&& thumbnailTask.isCancelled() == false
	    	&& thumbnailTask.getStatus() == Status.PENDING) {
	    	thumbnailTask.execute();
	    }
	    
	    QueryResponseCountTask responseCountTask  = holder.responseCountTask;
	    if (responseCountTask != null
	    	&& responseCountTask.isCancelled() == false
	    	&& responseCountTask.getStatus() == Status.PENDING) {
	    	responseCountTask.execute();
	    }
	}
}
 
源代码6 项目: PersianDateRangePicker   文件: DayPickerView.java
/**
 * Updates the title and selected month if the view has moved to a new
 * month.
 */
@Override
public void onScroll(
  AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
  MonthView child = (MonthView) view.getChildAt(0);
  if (child == null) {
    return;
  }

  // Figure out where we are
  long currScroll = view.getFirstVisiblePosition() * child.getHeight() - child.getBottom();
  mPreviousScrollPosition = currScroll;
  mPreviousScrollState = mCurrentScrollState;
}
 
源代码7 项目: QuickReturn   文件: QuickReturnUtils.java
public static int getScrollY(AbsListView lv) {
        View c = lv.getChildAt(0);
        if (c == null) {
            return 0;
        }

        int firstVisiblePosition = lv.getFirstVisiblePosition();
        int scrollY = -(c.getTop());
//        int scrollY = 0;


        sListViewItemHeights.put(lv.getFirstVisiblePosition(), c.getHeight());

//        if(scrollY>0)
//            Log.d("QuickReturnUtils", "getScrollY() : -(c.getTop()) - "+ -(c.getTop()));
//        else
//            Log.i("QuickReturnUtils", "getScrollY() : -(c.getTop()) - "+ -(c.getTop()));

        if (scrollY < 0)
            scrollY = 0;

        for (int i = 0; i < firstVisiblePosition; ++i) {
//            Log.d("QuickReturnUtils", "getScrollY() : i - "+i);

//            Log.d("QuickReturnUtils", "getScrollY() : sListViewItemHeights.get(i) - "+sListViewItemHeights.get(i));

            if (sListViewItemHeights.get(i) != null) // (this is a sanity check)
                scrollY += sListViewItemHeights.get(i); //add all heights of the views that are gone

        }

//        Log.d("QuickReturnUtils", "getScrollY() : scrollY - "+scrollY);

        return scrollY;
    }
 
源代码8 项目: AndroidMaterialDialog   文件: DialogRootView.java
/**
 * Returns, whether a specific list view is scrolled to the top, or not.
 *
 * @param listView The list view as an instance of the class {@link AbsListView}. The list view may not
 *                 be null
 * @return True, if the given list view is scrolled to the top, false otherwise
 */
private boolean isListViewScrolledToTop(@NonNull final AbsListView listView) {
    if (listView.getFirstVisiblePosition() == 0) {
        if (listView.getChildCount() == 0) {
            return true;
        } else {
            View child = listView.getChildAt(0);
            return child == null || child.getTop() == 0;
        }
    }

    return false;
}
 
源代码9 项目: ALLGO   文件: FadingActionBarHelperBase.java
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    View topChild = view.getChildAt(0);
    if (topChild == null) {
        onNewScroll(0);
    } else if (topChild != mMarginView) {
        onNewScroll(mHeaderContainer.getHeight());
    } else {
        onNewScroll(-topChild.getTop());
    }
}
 
源代码10 项目: Pix-Art-Messenger   文件: ConversationFragment.java
private static boolean scrolledToBottom(AbsListView listView) {
    final int count = listView.getCount();
    if (count == 0) {
        return true;
    } else if (listView.getLastVisiblePosition() == count - 1) {
        final View lastChild = listView.getChildAt(listView.getChildCount() - 1);
        return lastChild != null && lastChild.getBottom() <= listView.getHeight();
    } else {
        return false;
    }
}
 
源代码11 项目: narrate-android   文件: DayPickerView.java
/**
 * Updates the title and selected month if the view has moved to a new
 * month.
 */
@Override
public void onScroll(
        AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    MonthView child = (MonthView) view.getChildAt(0);
    if (child == null) {
        return;
    }

    // Figure out where we are
    long currScroll = view.getFirstVisiblePosition() * child.getHeight() - child.getBottom();
    mPreviousScrollPosition = currScroll;
    mPreviousScrollState = mCurrentScrollState;
}
 
源代码12 项目: SmileEssence   文件: CustomListFragment.java
@Override
public void onScrollStateChanged(AbsListView absListView, int scrollState) {
    Bundle args = getArguments();
    fragmentIndex = args.getInt(ADAPTER_INDEX);
    CustomListAdapter<?> adapter = getListAdapter(fragmentIndex);
    adapter.setNotifiable(false);

    if (absListView.getFirstVisiblePosition() == 0 && absListView.getChildAt(0) != null && absListView.getChildAt(0).getTop() == 0) {
        if (scrollState == SCROLL_STATE_IDLE) {
            updateListViewWithNotice(absListView, adapter, true);
        }
    }
}
 
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
                     int totalItemCount) {
	if (totalItemCount == 0 || !mListScrollStarted) {
		return;
	}
	final View firstChild = view.getChildAt(0);
	final int firstVisibleTop = firstChild.getTop(), firstVisibleBottom =
			firstChild.getBottom();
	final int firstVisibleHeight = firstChild.getHeight();
	final int delta;
	if (firstVisibleItem > mFirstVisibleItem) {
		mFirstVisibleTop += mFirstVisibleHeight;
		delta = firstVisibleTop - mFirstVisibleTop;
	} else if (firstVisibleItem < mFirstVisibleItem) {
		mFirstVisibleBottom -= mFirstVisibleHeight;
		delta = firstVisibleBottom - mFirstVisibleBottom;
	} else {
		delta = firstVisibleBottom - mFirstVisibleBottom;
	}
	mTotalScrollDistance += delta;
	if (mScrollDistanceListener != null) {
		mScrollDistanceListener.onScrollDistanceChanged(delta, mTotalScrollDistance);
	}
	mFirstVisibleTop = firstVisibleTop;
	mFirstVisibleBottom = firstVisibleBottom;
	mFirstVisibleHeight = firstVisibleHeight;
	mFirstVisibleItem = firstVisibleItem;
}
 
源代码14 项目: Conquer   文件: DayPickerView.java
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
       SimpleMonthView child = (SimpleMonthView) view.getChildAt(0);
       if (child == null) {
           return;
       }

       // Figure out where we are
       long currScroll = view.getFirstVisiblePosition() * child.getHeight() - child.getBottom();
       mPreviousScrollPosition = currScroll;
       mPreviousScrollState = mCurrentScrollState;
}
 
源代码15 项目: robotium-sandwich   文件: AAbsListView.java
@Override
public IAView getItemAt(int line) {
	View view = getAndWaitForView();
	AbsListView listView = (AbsListView)view;
	if (listView.getCount()>line){
		View child= listView.getChildAt(line);
		AView childAView = new AView();
		childAView.initialize(child, mScreen,MessageFormat.format("{0}.{1}{2}", mName,"Item",line));
		return childAView;
		
	}
		
	return null;
}
 
源代码16 项目: material   文件: DatePicker.java
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    MonthView child = (MonthView) view.getChildAt(0);
    if (child == null)
        return;

    // Figure out where we are
    mPreviousScrollPosition = getFirstVisiblePosition() * child.getHeight() - child.getBottom();
    mPreviousScrollState = mCurrentScrollState;
}
 
源代码17 项目: Bitocle   文件: AbsListViewDelegate.java
@Override
public boolean isReadyForPull(View view, final float x, final float y) {
    boolean ready = false;

    // First we check whether we're scrolled to the top
    AbsListView absListView = (AbsListView) view;
    if (absListView.getCount() == 0) {
        ready = true;
    } else if (absListView.getFirstVisiblePosition() == 0) {
        final View firstVisibleChild = absListView.getChildAt(0);
        ready = firstVisibleChild != null && firstVisibleChild.getTop() >= absListView.getPaddingTop();
    }

    // Then we have to check whether the fas scroller is enabled, and check we're not starting
    // the gesture from the scroller
    if (ready && absListView.isFastScrollEnabled() && isFastScrollAlwaysVisible(absListView)) {
        switch (getVerticalScrollbarPosition(absListView)) {
            case View.SCROLLBAR_POSITION_RIGHT:
                ready = x < absListView.getRight() - absListView.getVerticalScrollbarWidth();
                break;
            case View.SCROLLBAR_POSITION_LEFT:
                ready = x > absListView.getVerticalScrollbarWidth();
                break;
        }
    }

    return ready;
}
 
/**
 * Animate the item at given position away and show the undo {@link View}.
 * @param position the position.
 */
public void swipeViewAtPosition(final int position) {
    mCurrentRemovedId = getItemId(position);
    for (int i = 0; i < getAbsListView().getChildCount(); i++) {
        AbsListView absListView = getAbsListView();
        View childView = absListView.getChildAt(i);
        int positionForView = AdapterViewUtil.getPositionForView(absListView, childView);
        if (positionForView == position) {
            swipeView(childView, positionForView);
        }
    }
}
 
源代码19 项目: UltimateAndroid   文件: DayPickerView.java
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
       SimpleMonthView child = (SimpleMonthView) view.getChildAt(0);
       if (child == null) {
           return;
       }

       long currScroll = view.getFirstVisiblePosition() * child.getHeight() - child.getBottom();
       mPreviousScrollPosition = currScroll;
       mPreviousScrollState = mCurrentScrollState;
}
 
源代码20 项目: MaterialDateRangePicker   文件: DayPickerView.java
/**
 * Updates the title and selected month if the view has moved to a new
 * month.
 */
@Override
public void onScroll(
        AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    MonthView child = (MonthView) view.getChildAt(0);
    if (child == null) {
        return;
    }

    // Figure out where we are
    long currScroll = view.getFirstVisiblePosition() * child.getHeight() - child.getBottom();
    mPreviousScrollPosition = currScroll;
    mPreviousScrollState = mCurrentScrollState;
}