@Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager(); int firstVisible = layoutManager.findFirstVisibleItemPosition(); int visibleCount = Math.abs(firstVisible - layoutManager.findLastVisibleItemPosition()); int itemCount = recyclerView.getAdapter().getItemCount(); if (firstVisible != lastFirstVisible || visibleCount != lastVisibleCount || itemCount != lastItemCount) { scrollListener.onScroll(null, firstVisible, visibleCount, itemCount); lastFirstVisible = firstVisible; lastVisibleCount = visibleCount; lastItemCount = itemCount; } } }
/** * Gets the number of items currently in the adapter attached to this binder (i.e. the number of * items the underlying RecyclerView knows about). */ @Override public int getItemCount() { return mInternalAdapter.getItemCount(); }
@Override public int getItemCount() { return(wrapped.getItemCount()); } }
@Override public void onItemRangeRemoved(int positionStart, int itemCount) { mWrapAdapter.notifyItemRangeRemoved(positionStart + mWrapAdapter.getHeaderViewsCount() + 1, itemCount); if(mWrapAdapter.getInnerAdapter().getItemCount() < mPageSize ) { mFootView.setVisibility(GONE); } }
public void removeFooterView() { if(mFooterViewContainer!=null) { mFooterViewContainer.removeAllViews(); Adapter adapter = getAdapter(); if (adapter != null) { adapter.notifyItemChanged(adapter.getItemCount() - 2); } } } public void addFooterView(View footerView) {
@Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (1 < position && position < mAdapter.getItemCount() + 2) { mAdapter.onBindViewHolder(holder, position - 2); } }
void checkIfEmpty() { if (emptyView != null) { emptyView.setVisibility(getAdapter().getItemCount() > 0 ? GONE : VISIBLE); } }
@Override public void onChanged() { Adapter<?> adapter = getAdapter(); if(adapter != null && emptyView != null) { if(adapter.getItemCount() == 0) { emptyView.setVisibility(View.VISIBLE); BaseRecyclerView.this.setVisibility(View.GONE); } else { emptyView.setVisibility(View.GONE); BaseRecyclerView.this.setVisibility(View.VISIBLE); } } } };
@Test public void shouldUpdateOnChangingRepositoryWhenStarted() { repositoryAdapterWhileStarted = repositoryAdapter() .add(repository, repositoryPresenter) .add(secondRepository, secondRepositoryPresenter) .addAdditionalObservable(updateDispatcher) .whileStarted(activity); when(repositoryPresenter.getItemCount(ALTERNATIVE_REPOSITORY_ITEM)).thenReturn(1); repositoryAdapterWhileStarted.getItemCount(); //Trigger a refresh setActivityToStarted(); repository.accept(ALTERNATIVE_REPOSITORY_ITEM); runUiThreadTasksIncludingDelayedTasks(); setActivityToStopped(); repositoryAdapterWhileStarted.onBindViewHolder(viewHolder, 0); verify(repositoryPresenter).bind(ALTERNATIVE_REPOSITORY_ITEM, 0, viewHolder); }
@Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if (recyclerview.getAdapter() != null && newState == RecyclerView.SCROLL_STATE_IDLE && lastVisibleItem + 1 == recyclerview.getAdapter() .getItemCount() && mCommAdapter.isHasMore) mCoreAdapterPresenter.fetch(); }
private void updateView(boolean animation) { if (null == mAdapter || null == mViewTransition) { return; } if (mAdapter.getItemCount() == 0) { mViewTransition.showView(1, animation); } else { mViewTransition.showView(0, animation); } }
@Override public void onCompleted() { progressBar.setVisibility(View.GONE); if (reposRecycleView.getAdapter().getItemCount() > 0) { reposRecycleView.requestFocus(); hideSoftKeyboard(); reposRecycleView.setVisibility(View.VISIBLE); } else { infoTextView.setText(R.string.text_empty_repos); infoTextView.setVisibility(View.VISIBLE); } }
@Test public void shouldUpdateOnChangingRepositoryWhenResumed() { repositoryAdapterWhileResumed = repositoryAdapter() .add(repository, repositoryPresenter) .add(secondRepository, secondRepositoryPresenter) .addAdditionalObservable(updateDispatcher) .whileResumed(activity); when(repositoryPresenter.getItemCount(ALTERNATIVE_REPOSITORY_ITEM)).thenReturn(1); repositoryAdapterWhileResumed.getItemCount(); //Trigger a refresh setActivityToResumed(); repository.accept(ALTERNATIVE_REPOSITORY_ITEM); runUiThreadTasksIncludingDelayedTasks(); setActivityToPaused(); repositoryAdapterWhileResumed.onBindViewHolder(viewHolder, 0); verify(repositoryPresenter).bind(ALTERNATIVE_REPOSITORY_ITEM, 0, viewHolder); }
@Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { if (parent.getChildAdapterPosition(view) == parent.getAdapter().getItemCount() - 1) { outRect.set(0, 0, 0, 0); } else { outRect.set(0, 0, 0, mDividerDrawable.getIntrinsicHeight()); } }
public void setAdapter(RecyclerView.Adapter adapter) { if (mWrappedAdapter != null && mWrappedAdapter.getItemCount() > 0) { notifyItemRangeRemoved(getHeaderCount(), mWrappedAdapter.getItemCount()); } setWrappedAdapter(adapter); notifyItemRangeInserted(getHeaderCount(), mWrappedAdapter.getItemCount()); }
@Override public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { int hCount = getHeaderCount(); if (position >= hCount && position < hCount + mWrappedAdapter.getItemCount()) { mWrappedAdapter.onBindViewHolder(viewHolder, position - hCount); } }
@Override public void check(View view, NoMatchingViewException noViewFoundException) { Assert.assertTrue(view instanceof RecyclerView); Assert.assertEquals(count, ((RecyclerView)view).getAdapter().getItemCount()); } }
@Test public void shouldNotUpdateOnChangingRepositoryWhenNotStarted() { repositoryAdapterWhileStarted = repositoryAdapter() .add(repository, repositoryPresenter) .add(secondRepository, secondRepositoryPresenter) .addAdditionalObservable(updateDispatcher) .whileStarted(activity); repositoryAdapterWhileStarted.getItemCount(); //Trigger a refresh repository.accept(ALTERNATIVE_REPOSITORY_ITEM); runUiThreadTasksIncludingDelayedTasks(); repositoryAdapterWhileStarted.onBindViewHolder(viewHolder, 0); verify(repositoryPresenter).bind(REPOSITORY_ITEM, 0, viewHolder); }
@Test public void shouldNotUpdateOnChangingRepositoryWhenNotResumed() { repositoryAdapterWhileResumed = repositoryAdapter() .add(repository, repositoryPresenter) .add(secondRepository, secondRepositoryPresenter) .addAdditionalObservable(updateDispatcher) .whileResumed(activity); repositoryAdapterWhileResumed.getItemCount(); //Trigger a refresh repository.accept(ALTERNATIVE_REPOSITORY_ITEM); runUiThreadTasksIncludingDelayedTasks(); repositoryAdapterWhileResumed.onBindViewHolder(viewHolder, 0); verify(repositoryPresenter).bind(REPOSITORY_ITEM, 0, viewHolder); }
@Override public void run() { int count = scrollable.getAdapter().getItemCount() - 1; int position = count == 0 ? 1 : count > 0 ? count : 0; scrollable.scrollToPosition(position); } });