@Override public int getPositionForView(@NonNull final View view) { return mAbsListView.getPositionForView(view); }
/** * Returns the position within the adapter's dataset for the view, where view is an adapter item or a descendant of an adapter item. * Unlike {@link AdapterView#getPositionForView(android.view.View)}, returned position will reflect the position of the item given view is representing, * by subtracting the header views count. * * @param absListView the ListView containing the view. * @param view an adapter item or a descendant of an adapter item. This must be visible in given AdapterView at the time of the call. * * @return the position of the item in the AdapterView represented by given view, or {@link AdapterView#INVALID_POSITION} if the view does not * correspond to a list item (or it is not visible). */ public static int getPositionForView(@NonNull final AbsListView absListView, @NonNull final View view) { int position = absListView.getPositionForView(view); if (absListView instanceof ListView) { position -= ((ListView) absListView).getHeaderViewsCount(); } return position; }
private void ifNeedLoad(AbsListView view, int scrollState) { if (!loadEnable) { return; } try { if (scrollState == OnScrollListener.SCROLL_STATE_IDLE && !isLoading && view.getLastVisiblePosition() == view .getPositionForView(footer) && !isLoadFull) { onLoad(); isLoading = true; } } catch (Exception e) { } }
private void locatePost(View v) { pos = -1; if (threadViewable == null) return; if (threadViewable.getAbsListView() == null) return; if (threadViewable.getAdapter() == null) return; Cursor cursor = threadViewable.getAdapter().getCursor(); pos = threadViewable.getAbsListView().getPositionForView(v); if (DEBUG) Log.i(TAG, "locatePost() no cursorId, current pos=" + pos); if (cursor.moveToPosition(pos)) { postNo = cursor.getLong(cursor.getColumnIndex(ChanPost.POST_ID)); boardCode = cursor.getString(cursor.getColumnIndex(ChanPost.POST_BOARD_CODE)); threadNo = cursor.getLong(cursor.getColumnIndex(ChanPost.POST_RESTO)); if (threadNo <= 0) threadNo = postNo; } else { pos = -1; } } private void locatePost(View v, long cursorId) {
int pos = -1; try { pos = threadViewable.getAbsListView().getPositionForView(v);
@Override public boolean onLongClick(View v) { int pos = absListView.getPositionForView(v); Cursor cursor = adapter.getCursor(); if (cursor.moveToPosition(pos)) for (int i = 0; i < absListView.getChildCount(); i++) { View child = absListView.getChildAt(i); if (absListView.getPositionForView(child) == pos) { itemView = child; break;
@Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (mAdapter == null || mAdapter.getCount() == 0) { return; } // 数据已经全部加载,或数据为空时,或正在加载,不处理滚动事件 if (dataState == MessageData.MESSAGE_STATE_FULL || dataState == MessageData.MESSAGE_STATE_EMPTY || mState == STATE_LOADING) { return; } // 判断是否滚动到底部 boolean scrollEnd = false; try { if (view.getPositionForView(mFooterView) == view .getLastVisiblePosition()) scrollEnd = true; } catch (Exception e) { scrollEnd = false; } if (scrollEnd) { ++mCurrentPage; requestData(); } }
if (threadViewable.getAbsListView() == null) return; int pos = threadViewable.getAbsListView().getPositionForView(v); if (DEBUG) Log.i(TAG, "received item click pos: " + pos); for (int i = 0; i < threadViewable.getAbsListView().getChildCount(); i++) { View child = threadViewable.getAbsListView().getChildAt(i); if (threadViewable.getAbsListView().getPositionForView(child) == pos) { itemView = child; break;
@Override public void onClick(final View v) { final int position = mCurrentView.getPositionForView(v); if (position != ListView.INVALID_POSITION) { int count = mCurrentView.getCheckedItemCount(); switch (v.getId()) { case android.R.id.icon: if (count == 0) { ActionMode mChoiceActionMode = null; if (mChoiceActionMode == null && (mChoiceActionMode = mCurrentView.startActionMode(mMultiListener)) != null) { mCurrentView.setItemChecked(position, true); mCurrentView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); } } else { mCurrentView.setItemChecked(position, !mCurrentView.isItemChecked(position)); mCurrentView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); } break; case R.id.button_popup: v.post(new Runnable() { @Override public void run() { showPopupMenu(v, position); } }); break; } } } }
mDownPosition = mListView.getPositionForView(mDownView);
if (absListView == null) return; pos = absListView == null ? -1 : absListView.getPositionForView(v); if (absListView != null && pos >= 0) { absListView.setItemChecked(pos, true);
if (threadViewable == null || threadViewable.getAbsListView() == null) return; int pos = threadViewable.getAbsListView().getPositionForView(v); if (DEBUG) Log.i(TAG, "received item click pos: " + pos); for (int i = 0; i < threadViewable.getAbsListView().getChildCount(); i++) { View child = threadViewable.getAbsListView().getChildAt(i); if (threadViewable.getAbsListView().getPositionForView(child) == pos) { itemView = child; break;
@Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (mAdapter == null || mAdapter.getCount() == 0) { return; } if (mState == STATE_LOADMORE || mState == STATE_REFRESH) { return; } // 判断是否滚动到底部 boolean scrollEnd = false; try { if (view.getPositionForView(mAdapter.getFooterView()) == view .getLastVisiblePosition()) scrollEnd = true; } catch (Exception e) { scrollEnd = false; } if (mState == STATE_NONE && scrollEnd) { if (mAdapter.getState() == ListBaseAdapter.STATE_LOAD_MORE || mAdapter.getState() == ListBaseAdapter.STATE_NETWORK_ERROR) { mCurrentPage++; mState = STATE_LOADMORE; sendRequest(); mAdapter.setFooterViewLoading(); } } }
@Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (mAdapter == null || mAdapter.getCount() == 0) { return; } if (mState == STATE_LOADMORE || mState == STATE_REFRESH) { return; } // 判断是否滚动到底部 boolean scrollEnd = false; try { if (view.getPositionForView(mAdapter.getFooterView()) == view .getLastVisiblePosition()) scrollEnd = true; } catch (Exception e) { scrollEnd = false; } if (mState == STATE_NONE && scrollEnd) { if (mAdapter.getState() == ListBaseAdapter.STATE_LOAD_MORE || mAdapter.getState() == ListBaseAdapter.STATE_NETWORK_ERROR) { mCurrentPage++; mState = STATE_LOADMORE; sendRequest(); mAdapter.setFooterViewLoading(); } } }