@Override public int getNewListSize() { return mNewItems != null ? mNewItems.size() : 0; }
@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; }); }
@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 protected void onItemsCreated(@NonNull Items items) { RecommendedLoaderDelegate.attach(this, items.size()); items.add(new Category("About")); items.add(new Card(getString(R.string.introduce))); items.add(new Category("Developers")); items.add(new Contributor(R.mipmap.mine_icon, "张可", "Developer & Designer", "https://github.com/0xZhangKe")); items.add(new Category("Open Source Licenses")); items.add(new License("ShiZhong", "ZhangKe", License.APACHE_2, "https://github.com/0xZhangKe/ShiZhong")); }
private void initData() { Intent intent = getIntent(); try { dataBean = intent.getParcelableExtra(TAG); if (null != dataBean.getVideo_detail_info()) { if (null != dataBean.getVideo_detail_info().getDetail_video_large_image()) { String image = dataBean.getVideo_detail_info().getDetail_video_large_image().getUrl(); if (!TextUtils.isEmpty(image)) { ImageLoader.loadCenterCrop(this, image, jcVideo.thumbImageView, R.color.viewBackground, R.mipmap.error_image); } } } this.groupId = dataBean.getGroup_id() + ""; this.itemId = dataBean.getItem_id() + ""; this.videoId = dataBean.getVideo_id(); this.videoTitle = dataBean.getTitle(); this.shareUrl = dataBean.getDisplay_url(); oldItems.add(dataBean); } catch (NullPointerException e) { ErrorAction.print(e); } }
@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 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; }); }
@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); }
@Override protected void onItemsCreated(@NonNull Items items) { items.add(new Category("介绍与帮助")); items.add(new Card(getString(R.string.card_content))); items.add(new Category("Developers")); items.add(new Contributor(R.drawable.avatar_drakeet, "drakeet", "Developer & designer", "http://weibo.com/drak11t")); items.add(new Contributor(R.drawable.avatar_drakeet, "黑猫酱", "Developer", "https://drakeet.me")); items.add(new Contributor(R.drawable.avatar_drakeet, "小艾大人", "Developer")); items.add(new Category("我独立开发的应用")); items.add(new Recommended( 0, getString(R.string.pure_writer), "https://storage.recommend.wetolink.com/storage/app_recommend/images/YBMHN6SRpZeF0VHbPZWZGWJ2GyB6uaPx.png", "2017-10-09 16:46:57", 2.93, true) ); items.add(new Recommended( 1, getString(R.string.pure_mosaic), "http://image.coolapk.com/apk_logo/2016/0831/ic_pure_mosaic-2-for-16599-o_1argff2ddgvt1lfv1b3mk2vd6pq-uid-435200.png", ); RecommendedLoaderDelegate.attach(this, items.size(), new MoshiJsonConverter() /* or new GsonJsonConverter() */); items.add(new Category("Open Source Licenses")); items.add(new License("about-page", "drakeet", License.APACHE_2, "https://github.com/drakeet/about-page")); items.add(new License("MultiType", "drakeet", License.APACHE_2, "https://github.com/drakeet/MultiType"));
@Override protected void onItemsCreated(@NonNull Items items) { items.add(new Category("About and Help")); items.add(new Card(getString(R.string.about_introduce))); items.add(new Category("Developers")); items.add(new Contributor(R.mipmap.avatar_zhouas666, "zhouas666", "Developer & designer", "https://github.com/zas023")); items.add(new Category("Open Source Licenses")); items.add(new License("Glide", "bumptech", License.APACHE_2, "com.github.bumptech.glide:glide:4.8.0")); items.add(new License("MPAndroidChart", "PhilJay", License.APACHE_2, "com.github.PhilJay:MPAndroidChart:v3.1.0-alpha")); items.add(new License("MultiType", "drakeet", License.APACHE_2, "https://github.com/drakeet/MultiType")); items.add(new License("About-page", "drakeet", License.APACHE_2, "https://github.com/drakeet/about-page")); items.add(new License("Dialogs", "afollestad", License.APACHE_2, "com.afollestad.material-dialogs:core:0.9.6.0")); items.add(new License("PickerView", "contrarywind", License.APACHE_2, "com.contrarywind:Android-PickerView:4.1.6")); items.add(new License("Greenrobot", "greenrobot", License.APACHE_2, "org.greenrobot:greendao:3.2.2")); items.add(new License("Greenrobot", "greenrobot", License.APACHE_2, "org.greenrobot:eventbus:3.1.1")); items.add(new License("Bmob", "bmob", License.APACHE_2, "cn.bmob.android:bmob-sdk:3.6.8-rc7")); items.add(new License("RxJava", "reactivex", License.APACHE_2, "io.reactivex.rxjava2:rxjava:2.2.2")); items.add(new License("RxAndroid", "reactivex", License.APACHE_2, "io.reactivex.rxjava2:rxandroid:2.1.0")); items.add(new License("OkIO", "squareup", License.APACHE_2, "com.squareup.okio:okio:2.1.0")); items.add(new License("OkHttp", "squareup", License.APACHE_2, "com.squareup.okhttp3:okhttp:3.12.0")); items.add(new License("Gson", "google", License.APACHE_2, "com.google.code.gson:gson:2.8.5")); } }
@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 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; }
@Override public int getOldListSize() { return mOldItems != null ? mOldItems.size() : 0; }
@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(); }
@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)); }