public void show(Element element) { show(); Window dialogWindow = getWindow(); WindowManager.LayoutParams lp = dialogWindow.getAttributes(); dialogWindow.setGravity(Gravity.LEFT | Gravity.TOP); lp.x = element.getRect().left; lp.y = element.getRect().bottom; lp.width = getScreenWidth() - dip2px(30); lp.height = getScreenHeight() / 2; dialogWindow.setAttributes(lp); adapter.notifyDataSetChanged(element); layoutManager.scrollToPosition(0); }
@OnClick({R.id.empty_view, R.id.fab}) public void onClick(View view) { switch (view.getId()) { case R.id.empty_view: mSwipeRefreshLayout.setRefreshing(true); mPhotoPresenter.refreshData(); break; case R.id.fab: mPhotoRv.getLayoutManager().scrollToPosition(0); break; } } }
@Override public void onTouchingLetterChanged(String s) { int position = contactsAdapter.getPositionForSection(s.charAt(0)); if (position != -1) { RecyclerView_contacts.getLayoutManager().scrollToPosition(position); } }
@Override protected void onPostExecute(String result) { recyclerView.setAdapter(mAdapter); DragSortRecycler dragSortRecycler = new DragSortRecycler(); dragSortRecycler.setViewHandleId(R.id.reorder); dragSortRecycler.setOnItemMovedListener(new DragSortRecycler.OnItemMovedListener() { @Override public void onItemMoved(int from, int to) { Log.d("queue", "onItemMoved " + from + " to " + to); Song song = mAdapter.getSongAt(from); mAdapter.removeSongAt(from); mAdapter.addSongTo(to, song); mAdapter.notifyDataSetChanged(); MusicPlayer.moveQueueItem(from, to); } }); recyclerView.addItemDecoration(dragSortRecycler); recyclerView.addOnItemTouchListener(dragSortRecycler); recyclerView.addOnScrollListener(dragSortRecycler.getScrollListener()); recyclerView.getLayoutManager().scrollToPosition(mAdapter.currentlyPlayingPosition); }
@Override protected void onPostExecute(String result) { recyclerView.setAdapter(mAdapter); DragSortRecycler dragSortRecycler = new DragSortRecycler(); dragSortRecycler.setViewHandleId(R.id.reorder); dragSortRecycler.setOnItemMovedListener(new DragSortRecycler.OnItemMovedListener() { @Override public void onItemMoved(int from, int to) { Log.d("queue", "onItemMoved " + from + " to " + to); Song song = mAdapter.getSongAt(from); mAdapter.removeSongAt(from); mAdapter.addSongTo(to, song); mAdapter.notifyDataSetChanged(); MusicPlayer.moveQueueItem(from, to); } }); recyclerView.addItemDecoration(dragSortRecycler); recyclerView.addOnItemTouchListener(dragSortRecycler); recyclerView.addOnScrollListener(dragSortRecycler.getScrollListener()); recyclerView.getLayoutManager().scrollToPosition(mAdapter.currentlyPlayingPosition); }
private void checkAdapterDataObserver(){ if (((RecyclerView) mScrollItemView).getLayoutManager() != null) { if (((RecyclerView) mScrollItemView).getLayoutManager() instanceof LinearLayoutManager) { float recyclerViewBottom = mScrollItemView.getBottom(); int countCount = (((RecyclerView) mScrollItemView).getLayoutManager()).getChildCount(); if(countCount > 0){ float lastChildViewBottom = (((RecyclerView) mScrollItemView).getLayoutManager()).getChildAt(countCount - 1).getBottom(); float contentViewHeight = lastChildViewBottom - mScrollHeight; if(contentViewHeight + mHeaderHeight < recyclerViewBottom){ if(mStickHeaderViewPagerManager != null){ mRecyclerViewScrollY = 0; (((RecyclerView) mScrollItemView).getLayoutManager()).scrollToPosition(0); mStickHeaderViewPagerManager.onRecyclerViewScroll((RecyclerView) mScrollItemView, mRecyclerViewScrollY, mPosition, true); } } } } else if (((RecyclerView) mScrollItemView).getLayoutManager() instanceof GridLayoutManager) { ((GridLayoutManager) ((RecyclerView) mScrollItemView).getLayoutManager()).scrollToPositionWithOffset(0, -mRecyclerViewScrollY); } } }
@Override public void startAutoRefresh() { if (mRecyclerView != null && mHTViewHolder != null && mHTViewHolder.getRefreshContainerView() != null) { if (mRefreshStatus != RefreshStatus.IDLE || mLoadMoreStatus != LoadMoreStatus.IDLE || mRefreshDelegate == null) { return; } if (mScrollJob.isScrollRunning() || mLoadMoreAnimator != null && mLoadMoreAnimator.isRunning()) { return; } RecyclerView.LayoutManager layoutManager = mRecyclerView.getLayoutManager(); if (layoutManager != null) { int pos = Utils.getFirstItemPosition(layoutManager, true); layoutManager.scrollToPosition(0); mScrollJob.tryToScrollTo(mHTViewHolderTracker.getOffsetToRefresh(), mHTViewHolder.getAnimationTime(), 10 * pos); mAutoRefresh = true; } } }
/** * 切换layoutManager * * 为了保证切换之后页面上还是停留在当前展示的位置,记录下切换之前的第一条展示位置,切换完成之后滚动到该位置 * 另外切换之后必须要重新刷新下当前已经缓存的itemView,否则会出现布局错乱(俩种模式下的item布局不同), * RecyclerView提供了swapAdapter来进行切换adapter并清理老的itemView cache * * @param layoutManager */ public void switchLayoutManager(LayoutManager layoutManager) { int firstVisiblePosition = getFirstVisiblePosition(); // getLayoutManager().removeAllViews(); setLayoutManager(layoutManager); // super.swapAdapter(mAutoLoadAdapter, true); getLayoutManager().scrollToPosition(firstVisiblePosition); }
@Override public void scrollToBottom() { layoutManager.scrollToPosition(adapter.getItemCount() - 1); }
@Override public void addAdapter(Student student) { homeAdapter.addData(0, student); mRecycler.getLayoutManager().scrollToPosition(0); mBottomSheetDialog.dismiss(); }
/** * Center list on the selected year * @param position of year in the list */ public void centerListOn(final int position) { getLayoutManager().scrollToPosition(position); try { getLayoutManager().scrollVerticallyBy(mViewSize / 2 - mChildSize / 2, null, null); } catch(Exception e){ Log.w(TAG, "Can't scroll more"); } }
@Override public void run() { recyclerView.smoothScrollToPosition(messageList.size()); recyclerView.getLayoutManager().scrollToPosition(messageList.size()); } });
@Override public void call(ScrollToTopEvent scrollToTopEvent) { mNewsRv.getLayoutManager().scrollToPosition(0); } });
@Override public boolean dispatchTouchEvent(MotionEvent event) { final int action = event.getAction(); final float y = event.getY();// 点击y坐标 final int oldChoose = choose; // 点击y坐标所占总高度的比例*b数组的长度就等于点击b中的个数. final int c = (int) ((y - offsetY) / singleHeight); switch (action) { case MotionEvent.ACTION_UP: setBackgroundColor(0x00000000); choose = -1; invalidate(); break; default: setBackgroundColor(0x66000000); if (oldChoose != c) { if (c >= 0 && c < indexMap.size()) { int position = indexMap.keyAt(c); recyclerView.getLayoutManager().scrollToPosition(position); choose = c; invalidate(); } } break; } return true; }
@Override public void initData(HeaderFooterAdapter adapter) { // 优先从缓存中获取数据,如果是第一次加载则恢复滚动位置,如果没有缓存则从网络加载 List<Object> topics = mDataCache.getTopicsListObj(); if (null != topics && topics.size() > 0) { Logger.e("topics : " + topics.size()); pageIndex = mConfig.getTopicListPageIndex(); adapter.addDatas(topics); if (isFirstLaunch) { int lastPosition = mConfig.getTopicListLastPosition(); mRecyclerView.getLayoutManager().scrollToPosition(lastPosition); isFirstAddFooter = false; isFirstLaunch = false; } } else { loadMore(); } }
@Override public void initData(HeaderFooterAdapter adapter) { // 优先从缓存中获取数据,如果是第一次加载则恢复滚动位置,如果没有缓存则从网络加载 List<Object> news = mDataCache.getNewsListObj(); if (null != news && news.size() > 0) { Logger.e("news : " + news.size()); pageIndex = mConfig.getNewsListPageIndex(); adapter.addDatas(news); if (isFirstLaunch) { int lastPosition = mConfig.getNewsListLastPosition(); mRecyclerView.getLayoutManager().scrollToPosition(lastPosition); isFirstAddFooter = false; isFirstLaunch = false; } } else { loadMore(); } }
@Override public void call(ScrollToTopEvent scrollToTopEvent) { mNewsRV.getLayoutManager().scrollToPosition(0); } });
@Override public void onTouchingLetterChanged(String s) { if (mAdapter != null) { mAdapter.closeOpenedSwipeItemLayoutWithAnim(); } int position = mAdapter.getPositionForSection(s.charAt(0)); if (position != -1) { mRecyclerView.getLayoutManager().scrollToPosition(position); } } });
public void scrollToTop() { if (child instanceof AbsListView) { AbsListView absListView = (AbsListView) child; absListView.setSelection(0); } else if (child instanceof RecyclerView) { RecyclerView recyclerView = (RecyclerView) child; RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); layoutManager.scrollToPosition(0); } }
@Override protected void onPostExecute(String result) { recyclerView.setAdapter(mAdapter); DragSortRecycler dragSortRecycler = new DragSortRecycler(); dragSortRecycler.setViewHandleId(R.id.reorder); dragSortRecycler.setOnItemMovedListener(new DragSortRecycler.OnItemMovedListener() { @Override public void onItemMoved(int from, int to) { Log.d("queue", "onItemMoved " + from + " to " + to); Song song = mAdapter.getSongAt(from); mAdapter.removeSongAt(from); mAdapter.addSongTo(to, song); mAdapter.notifyDataSetChanged(); MusicPlayer.moveQueueItem(from, to); } }); recyclerView.addItemDecoration(dragSortRecycler); recyclerView.addOnItemTouchListener(dragSortRecycler); recyclerView.addOnScrollListener(dragSortRecycler.getScrollListener()); recyclerView.getLayoutManager().scrollToPosition(mAdapter.currentlyPlayingPosition); }