@Override public void onShowNetError() { Snackbar.make(scrollView, R.string.network_error, Snackbar.LENGTH_SHORT).show(); getActivity().runOnUiThread(() -> { adapter.setItems(new Items()); adapter.notifyDataSetChanged(); canLoadMore = false; }); } }
@Override public void onShowNetError() { Toast.makeText(getActivity(), R.string.network_error, Toast.LENGTH_SHORT).show(); getActivity().runOnUiThread(() -> { adapter.setItems(new Items()); adapter.notifyDataSetChanged(); canLoadMore = false; }); }
@Override public void onSetAdapter(List<?> list) { Items newItems = new Items(list); newItems.add(new LoadingBean()); DiffCallback.create(oldItems, newItems, adapter); oldItems.clear(); oldItems.addAll(newItems); canLoadMore = true; recyclerView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT)); }
@Override public void onSetAdapter(List<?> list) { Items newItems = new Items(list); newItems.add(new LoadingBean()); DiffCallback.create(oldItems, newItems, adapter); oldItems.clear(); oldItems.addAll(newItems); canLoadMore = true; recyclerView.stopScroll(); }
@Override public void onSetAdapter(final List<?> list) { Items newItems = new Items(list); newItems.add(new LoadingBean()); DiffCallback.create(oldItems, newItems, adapter); oldItems.clear(); oldItems.addAll(newItems); canLoadMore = true; recyclerView.stopScroll(); }
@Override public void onSetAdapter(List<?> list) { Items newItems = new Items(list); newItems.add(new LoadingBean()); DiffCallback.create(oldItems, newItems, adapter); oldItems.clear(); oldItems.addAll(newItems); canLoadMore = true; recyclerView.stopScroll(); }
@Override public void onSetAdapter(final List<?> list) { Items newItems = new Items(list); newItems.add(new LoadingBean()); DiffCallback.create(oldItems, newItems, adapter); oldItems.clear(); oldItems.addAll(newItems); canLoadMore = true; recyclerView.stopScroll(); }
@Override public void onSetAdapter(List<?> list) { Items newItems = new Items(list); newItems.add(new LoadingBean()); DiffCallback.create(oldItems, newItems, adapter); oldItems.clear(); oldItems.addAll(newItems); canLoadMore = true; recyclerView.stopScroll(); }
@Override public void onSetAdapter(List<?> list) { Items newItems = new Items(list); newItems.add(new LoadingBean()); DiffCallback.create(oldItems, newItems, adapter); oldItems.clear(); oldItems.addAll(newItems); canLoadMore = true; recyclerView.stopScroll(); }
@Override public void onSetAdapter(final List<?> list) { Items newItems = new Items(list); newItems.add(new LoadingBean()); DiffCallback.create(oldItems, newItems, adapter); oldItems.clear(); oldItems.addAll(newItems); canLoadMore = true; recyclerView.stopScroll(); }
@Override public void onSetAdapter(final List<?> list) { Items newItems = new Items(); newItems.add(dataBean); newItems.addAll(list); newItems.add(new LoadingBean()); DiffCallback.create(newItems, newItems, adapter); oldItems.clear(); oldItems.addAll(newItems); canLoadMore = true; }
@Override public void onSetAdapter(final List<?> list) { Items newItems = new Items(list); newItems.add(new LoadingBean()); DiffCallback.create(oldItems, newItems, adapter); oldItems.clear(); oldItems.addAll(newItems); canLoadMore = true; /** * https://medium.com/@hanru.yeh/recyclerview-and-appbarlayout-behavior-changed-in-v26-0-x-d9eb4de78fc0 * support libraries v26 增加了 RV 惯性滑动,当 root layout 使用了 AppBarLayout Behavior 就会自动生效 * 因此需要手动停止滑动 */ recyclerView.stopScroll(); }
@Override public void onSetAdapter(List<?> list) { Items newItems = new Items(); newItems.add(WendaContentHeaderBean); newItems.addAll(list); newItems.add(new LoadingBean()); DiffCallback.create(oldItems, newItems, adapter); oldItems.clear(); oldItems.addAll(newItems); canLoadMore = true; }
@Override public void onSetAdapter(List<?> list) { Items newItems = new Items(); newItems.add(dataBean); newItems.addAll(list); newItems.add(new LoadingBean()); DiffCallback.create(oldItems, newItems, adapter); oldItems.clear(); oldItems.addAll(newItems); canLoadMore = true; recyclerView.stopScroll(); }
@Test public void shouldGetNonNullAdapter() { Exception exception = null; MultiTypeAdapter adapter = new MultiTypeAdapter(); Items empty = new Items(); adapter.setItems(empty); TestItemViewBinder binder = new TestItemViewBinder(); adapter.register(TestItem.class, binder); empty.add(new TestItem("ItemViewBinderTest")); try { binder.notifyTestItemAdded(); } catch (Exception e) { e.printStackTrace(); exception = e; } assertNull(exception); }
@Test(expected = IllegalStateException.class) public void shouldThrowIllegalStateException() { MultiTypeAdapter adapter = new MultiTypeAdapter(); Items empty = new Items(); adapter.setItems(empty); TestItemViewBinder binder = new TestItemViewBinder(); empty.add(new TestItem("ItemViewBinderTest")); binder.notifyTestItemAdded(); adapter.register(TestItem.class, binder); }
@Override public void onShowNoMore() { runOnUiThread(() -> { if (oldItems.size() > 1) { Items newItems = new Items(oldItems); newItems.remove(newItems.size() - 1); newItems.add(new LoadingEndBean()); adapter.setItems(newItems); adapter.notifyDataSetChanged(); } else if (oldItems.size() == 0) { oldItems.add(new LoadingEndBean()); adapter.setItems(oldItems); adapter.notifyDataSetChanged(); } canLoadMore = false; }); }
@Override public void onShowNoMore() { getActivity().runOnUiThread(() -> { if (oldItems.size() > 0) { Items newItems = new Items(oldItems); newItems.remove(newItems.size() - 1); newItems.add(new LoadingEndBean()); adapter.setItems(newItems); adapter.notifyDataSetChanged(); } else if (oldItems.size() == 0) { oldItems.add(new LoadingEndBean()); adapter.setItems(oldItems); adapter.notifyDataSetChanged(); } canLoadMore = false; }); }
@Override public void onShowNoMore() { getActivity().runOnUiThread(() -> { if (oldItems.size() > 0) { Items newItems = new Items(oldItems); newItems.remove(newItems.size() - 1); newItems.add(new LoadingEndBean()); adapter.setItems(newItems); adapter.notifyDataSetChanged(); } else if (oldItems.size() == 0) { oldItems.add(new LoadingEndBean()); adapter.setItems(oldItems); adapter.notifyDataSetChanged(); } canLoadMore = false; }); }
@Override @SuppressWarnings("deprecation") protected void onPostCreate(@Nullable Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); adapter = new MultiTypeAdapter(); adapter.register(Category.class, new CategoryViewBinder()); adapter.register(Card.class, new CardViewBinder()); adapter.register(Line.class, new LineViewBinder()); adapter.register(Contributor.class, new ContributorViewBinder(this)); adapter.register(License.class, new LicenseViewBinder()); adapter.register(Recommended.class, new RecommendedViewBinder(this)); items = new Items(); onItemsCreated(items); adapter.setItems(items); adapter.setHasStableIds(true); recyclerView.addItemDecoration(new DividerItemDecoration(adapter)); recyclerView.setAdapter(adapter); initialized = true; }