androidx.recyclerview.widget.RecyclerView#AdapterDataObserver ( )源码实例Demo

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

源代码1 项目: FeatureAdapter   文件: TestUtils.java
/**
 * Fixes internal dependencies to android.database.Observable so that a RecyclerView.Adapter can
 * be tested using regular unit tests while verifying changes to the data.
 *
 * <p>Pulled from:
 * https://github.com/badoo/Chateau/blob/master/ExampleApp/src/test/java/com/badoo/chateau/example/ui/utils/TestUtils.java
 */
public static RecyclerView.AdapterDataObserver fixAdapterForTesting(RecyclerView.Adapter adapter)
    throws NoSuchFieldException, IllegalAccessException {
  // Observables are not mocked by default so we need to hook the adapter up to an observer so we can track changes
  Field observableField = RecyclerView.Adapter.class.getDeclaredField("mObservable");
  observableField.setAccessible(true);
  Object observable = observableField.get(adapter);
  Field observersField = Observable.class.getDeclaredField("mObservers");
  observersField.setAccessible(true);
  final ArrayList<Object> observers = new ArrayList<>();
  RecyclerView.AdapterDataObserver dataObserver =
      createMock(RecyclerView.AdapterDataObserver.class);
  observers.add(dataObserver);
  observersField.set(observable, observers);
  return dataObserver;
}
 
源代码2 项目: DevUtils   文件: BaseActivity.java
/**
 * 注册 Adapter 观察者
 * @param recyclerView        {@link RecyclerView}
 * @param adapterDataObserver Adapter 观察者
 * @param isRefAdapter        是否刷新适配器
 */
public void registerAdapterDataObserver(RecyclerView recyclerView, RecyclerView.AdapterDataObserver adapterDataObserver, boolean isRefAdapter) {
    if (recyclerView != null) {
        RecyclerView.Adapter adapter = recyclerView.getAdapter();
        if (adapter != null) {
            adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
                @Override
                public void onChanged() {
                    super.onChanged();
                    // 获取数据总数
                    int itemCount = adapter.getItemCount();
                    // 如果为 null 特殊处理
                    ViewUtils.reverseVisibilitys(itemCount != 0, vid_ba_content_linear, vid_ba_state_linear);
                    // 判断是否不存在数据
                    if (itemCount == 0) {
                        stateLayout.showEmptyData();
                    }

                    if (adapterDataObserver != null) {
                        adapterDataObserver.onChanged();
                    }
                }
            });
            // 刷新适配器
            if (isRefAdapter) adapter.notifyDataSetChanged();
        }
    }
}
 
源代码3 项目: DevUtils   文件: BaseMVPActivity.java
/**
 * 注册 Adapter 观察者
 * @param recyclerView        {@link RecyclerView}
 * @param adapterDataObserver Adapter 观察者
 * @param isRefAdapter        是否刷新适配器
 */
public void registerAdapterDataObserver(RecyclerView recyclerView, RecyclerView.AdapterDataObserver adapterDataObserver, boolean isRefAdapter) {
    if (recyclerView != null) {
        RecyclerView.Adapter adapter = recyclerView.getAdapter();
        if (adapter != null) {
            adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
                @Override
                public void onChanged() {
                    super.onChanged();
                    // 获取数据总数
                    int itemCount = adapter.getItemCount();
                    // 如果为 null 特殊处理
                    ViewUtils.reverseVisibilitys(itemCount != 0, vid_ba_content_linear, vid_ba_state_linear);
                    // 判断是否不存在数据
                    if (itemCount == 0) {
                        stateLayout.showEmptyData();
                    }

                    if (adapterDataObserver != null) {
                        adapterDataObserver.onChanged();
                    }
                }
            });
            // 刷新适配器
            if (isRefAdapter) adapter.notifyDataSetChanged();
        }
    }
}
 
源代码4 项目: recyclerview-adapters   文件: BaseLocalAdapter.java
@Override
public void bindParentAdapter(@Nullable CompositeRecyclerAdapter adapter, @Nullable RecyclerView.AdapterDataObserver dataObserver) {
    if (hasParentAdapter()) {
        throw new IllegalStateException("Adapter already has parentAdapter.");
    }
    parentAdapter = new WeakReference<>(adapter);
    registerAdapterDataObserver(dataObserver);
}
 
@Override
public void bindParentAdapter(@Nullable CompositeRecyclerAdapter adapter, @Nullable RecyclerView.AdapterDataObserver dataObserver) {
    if (hasParentAdapter()) {
        throw new IllegalStateException("Adapter already has parentAdapter.");
    }
    parentAdapter = new WeakReference<>(adapter);
    registerAdapterDataObserver(dataObserver);
}
 
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_pager_page, container, false);

    recyclerView = (RecyclerView) rootView.findViewById(R.id.mainGallery);
    recyclerView.setHasFixedSize(true);
    ((SimpleItemAnimator) recyclerView.getItemAnimator()).setSupportsChangeAnimations(false);
    RecyclerView.LayoutManager layoutManager = getLayoutManager(getContext());
    recyclerView.setLayoutManager(layoutManager);
    emptyView = rootView.findViewById(R.id.emptyListView);
    dividerSize = getResources().getDimensionPixelSize(R.dimen.grid_divider_width);
    addItemDecoration(recyclerView);
    observer = new RecyclerView.AdapterDataObserver() {
        @Override
        public void onChanged() {
            super.onChanged();
            emptyView.setVisibility(recyclerView.getAdapter().getItemCount() == 0 ? View.VISIBLE : View.INVISIBLE);
        }

        @Override
        public void onItemRangeInserted(int positionStart, int itemCount) {
            super.onItemRangeInserted(positionStart, itemCount);
            emptyView.setVisibility(recyclerView.getAdapter().getItemCount() == 0 ? View.VISIBLE : View.INVISIBLE);

        }

        @Override
        public void onItemRangeRemoved(int positionStart, int itemCount) {
            super.onItemRangeRemoved(positionStart, itemCount);
            emptyView.setVisibility(recyclerView.getAdapter().getItemCount() == 0 ? View.VISIBLE : View.INVISIBLE);

        }
    };

    return rootView;
}
 
@Override
public void attachToPager(@NonNull final ScrollingPagerIndicator indicator, @NonNull final RecyclerView pager) {
    if (!(pager.getLayoutManager() instanceof LinearLayoutManager)) {
        throw new IllegalStateException("Only LinearLayoutManager is supported");
    }
    if (pager.getAdapter() == null) {
        throw new IllegalStateException("RecyclerView has not Adapter attached");
    }
    this.layoutManager = (LinearLayoutManager) pager.getLayoutManager();
    this.recyclerView = pager;
    this.attachedAdapter = pager.getAdapter();
    this.indicator = indicator;

    dataObserver = new RecyclerView.AdapterDataObserver() {
        @Override
        public void onChanged() {
            indicator.setDotCount(attachedAdapter.getItemCount());
            updateCurrentOffset();
        }

        @Override
        public void onItemRangeChanged(int positionStart, int itemCount) {
            onChanged();
        }

        @Override
        public void onItemRangeChanged(int positionStart, int itemCount, Object payload) {
            onChanged();
        }

        @Override
        public void onItemRangeInserted(int positionStart, int itemCount) {
            onChanged();
        }

        @Override
        public void onItemRangeRemoved(int positionStart, int itemCount) {
            onChanged();
        }

        @Override
        public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) {
            onChanged();
        }
    };
    attachedAdapter.registerAdapterDataObserver(dataObserver);
    indicator.setDotCount(attachedAdapter.getItemCount());
    updateCurrentOffset();

    scrollListener = new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
            if (newState == RecyclerView.SCROLL_STATE_IDLE && isInIdleState()) {
                int newPosition = findCompletelyVisiblePosition();
                if (newPosition != RecyclerView.NO_POSITION) {
                    indicator.setDotCount(attachedAdapter.getItemCount());
                    if (newPosition < attachedAdapter.getItemCount()) {
                        indicator.setCurrentPosition(newPosition);
                    }
                }
            }
        }

        @Override
        public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
            updateCurrentOffset();
        }
    };

    recyclerView.addOnScrollListener(scrollListener);
}
 
@Override
public void attachToPager(@NonNull final ScrollingPagerIndicator indicator, @NonNull final ViewPager2 pager) {
    attachedAdapter = pager.getAdapter();
    if (attachedAdapter == null) {
        throw new IllegalStateException("Set adapter before call attachToPager() method");
    }

    this.pager = pager;

    updateIndicatorDotsAndPosition(indicator);

    dataSetObserver = new RecyclerView.AdapterDataObserver() {
        @Override
        public void onChanged() {
            indicator.reattach();
        }
    };
    attachedAdapter.registerAdapterDataObserver(dataSetObserver);

    onPageChangeListener = new ViewPager2.OnPageChangeCallback() {

        boolean idleState = true;

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixel) {
            updateIndicatorOnPagerScrolled(indicator, position, positionOffset);
        }

        @Override
        public void onPageSelected(int position) {
            if (idleState) {
                updateIndicatorDotsAndPosition(indicator);
            }
        }

        @Override
        public void onPageScrollStateChanged(int state) {
            idleState = state == ViewPager2.SCROLL_STATE_IDLE;
        }
    };

    pager.registerOnPageChangeCallback(onPageChangeListener);
}
 
源代码9 项目: PictureSelector   文件: BaseAnimationAdapter.java
@Override
public void registerAdapterDataObserver(RecyclerView.AdapterDataObserver observer) {
    super.registerAdapterDataObserver(observer);
    mAdapter.registerAdapterDataObserver(observer);
}
 
源代码10 项目: PictureSelector   文件: BaseAnimationAdapter.java
@Override
public void unregisterAdapterDataObserver(RecyclerView.AdapterDataObserver observer) {
    super.unregisterAdapterDataObserver(observer);
    mAdapter.unregisterAdapterDataObserver(observer);
}
 
源代码11 项目: OmegaRecyclerView   文件: WrapperAdapter.java
@Override
public void registerAdapterDataObserver(RecyclerView.AdapterDataObserver observer) {
    mChildAdapter.registerAdapterDataObserver(observer);
}
 
源代码12 项目: OmegaRecyclerView   文件: WrapperAdapter.java
@Override
public void unregisterAdapterDataObserver(RecyclerView.AdapterDataObserver observer) {
    mChildAdapter.unregisterAdapterDataObserver(observer);
}
 
源代码13 项目: CircleIndicator   文件: CircleIndicator3.java
public RecyclerView.AdapterDataObserver getAdapterDataObserver() {
    return mAdapterDataObserver;
}
 
源代码14 项目: MusicBobber   文件: BaseFilter.java
public RecyclerView.AdapterDataObserver getAdapterDataObserver() {
    return adapterDataObserver;
}
 
源代码15 项目: power-adapters   文件: RecyclerConverterAdapter.java
@Override
public final void registerAdapterDataObserver(RecyclerView.AdapterDataObserver observer) {
    super.registerAdapterDataObserver(observer);
    mAdapterDataObservers.add(observer);
    updateObserver();
}
 
源代码16 项目: CircleIndicator   文件: CircleIndicator2.java
public RecyclerView.AdapterDataObserver getAdapterDataObserver() {
    return mAdapterDataObserver;
}
 
源代码17 项目: SwipeRecyclerView   文件: AdapterWrapper.java
@Override
public void registerAdapterDataObserver(@NonNull RecyclerView.AdapterDataObserver observer) {
    super.registerAdapterDataObserver(observer);
}
 
源代码18 项目: SwipeRecyclerView   文件: AdapterWrapper.java
@Override
public void unregisterAdapterDataObserver(@NonNull RecyclerView.AdapterDataObserver observer) {
    super.unregisterAdapterDataObserver(observer);
}
 
源代码19 项目: recyclerview-animators   文件: AnimationAdapter.java
@Override public void registerAdapterDataObserver(RecyclerView.AdapterDataObserver observer) {
  super.registerAdapterDataObserver(observer);
  mAdapter.registerAdapterDataObserver(observer);
}
 
源代码20 项目: recyclerview-adapters   文件: LocalAdapter.java
void bindParentAdapter(@Nullable CompositeRecyclerAdapter adapter, @Nullable RecyclerView.AdapterDataObserver dataObserver);