From ebd700d617ad53f3d59e3cb3f663450ed420fc39 Mon Sep 17 00:00:00 2001 From: gmf-office Date: Tue, 5 Dec 2017 14:58:22 +0800 Subject: [PATCH 001/653] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E6=BB=A1=E4=B8=80=E5=B1=8F=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/chad/library/adapter/base/BaseQuickAdapter.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java b/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java index 63454a3fb..52f6c0ad4 100755 --- a/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java +++ b/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java @@ -217,7 +217,7 @@ public void disableLoadMoreIfNotFullPage(RecyclerView recyclerView) { recyclerView.postDelayed(new Runnable() { @Override public void run() { - if ((linearLayoutManager.findLastCompletelyVisibleItemPosition() + 1) != getItemCount()) { + if (isFullScreen(linearLayoutManager)) { setEnableLoadMore(true); } } @@ -238,6 +238,11 @@ public void run() { } } + private boolean isFullScreen(LinearLayoutManager llm) { + return (llm.findLastCompletelyVisibleItemPosition() + 1) != getItemCount() || + llm.findFirstCompletelyVisibleItemPosition() != 0; + } + private int getTheBiggestNumber(int[] numbers) { int tmp = -1; if (numbers == null || numbers.length == 0) { @@ -969,6 +974,7 @@ public boolean onLongClick(View v) { /** * override this method if you want to override click event logic + * * @param v * @param position */ @@ -978,6 +984,7 @@ public void setOnItemClick(View v, int position) { /** * override this method if you want to override longClick event logic + * * @param v * @param position * @return From 112d7fc0774d155a78ef86e2acb2181e6024b3f3 Mon Sep 17 00:00:00 2001 From: WildCard Date: Wed, 13 Dec 2017 13:06:38 +0800 Subject: [PATCH 002/653] Update BaseMultiItemQuickAdapter.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改使用泛型时的一点小错误(可以看原来代码警告), 修改为判空增加代码健壮性。 --- .../library/adapter/base/BaseMultiItemQuickAdapter.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/library/src/main/java/com/chad/library/adapter/base/BaseMultiItemQuickAdapter.java b/library/src/main/java/com/chad/library/adapter/base/BaseMultiItemQuickAdapter.java index 0f61e887c..453f59dea 100644 --- a/library/src/main/java/com/chad/library/adapter/base/BaseMultiItemQuickAdapter.java +++ b/library/src/main/java/com/chad/library/adapter/base/BaseMultiItemQuickAdapter.java @@ -36,9 +36,9 @@ public BaseMultiItemQuickAdapter(List data) { @Override protected int getDefItemViewType(int position) { - Object item = mData.get(position); - if (item instanceof MultiItemEntity) { - return ((MultiItemEntity) item).getItemType(); + T item = mData.get(position); + if (item != null) { + return item.getItemType(); } return DEFAULT_VIEW_TYPE; } From 5168f741ae212ab38d7197e878f0c919e38baa0e Mon Sep 17 00:00:00 2001 From: humazed Date: Mon, 15 Jan 2018 17:46:08 +0200 Subject: [PATCH 003/653] update gradle build tools to v3.0.1 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 28cacc2eb..0ee3ea27e 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.0.0' + classpath 'com.android.tools.build:gradle:3.0.1' } } From 77317cf9e2c988cca4052e8280662fd23cf57199 Mon Sep 17 00:00:00 2001 From: humazed Date: Mon, 15 Jan 2018 17:47:28 +0200 Subject: [PATCH 004/653] fixed the issue #1928 regarding onItemSwiped callback. --- .../library/adapter/base/BaseItemDraggableAdapter.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/library/src/main/java/com/chad/library/adapter/base/BaseItemDraggableAdapter.java b/library/src/main/java/com/chad/library/adapter/base/BaseItemDraggableAdapter.java index 60cda21f6..8d1ddaa15 100644 --- a/library/src/main/java/com/chad/library/adapter/base/BaseItemDraggableAdapter.java +++ b/library/src/main/java/com/chad/library/adapter/base/BaseItemDraggableAdapter.java @@ -239,16 +239,16 @@ public void onItemSwipeClear(RecyclerView.ViewHolder viewHolder) { } public void onItemSwiped(RecyclerView.ViewHolder viewHolder) { - if (mOnItemSwipeListener != null && itemSwipeEnabled) { - mOnItemSwipeListener.onItemSwiped(viewHolder, getViewHolderPosition(viewHolder)); - } - int pos = getViewHolderPosition(viewHolder); if (inRange(pos)) { mData.remove(pos); notifyItemRemoved(viewHolder.getAdapterPosition()); } + + if (mOnItemSwipeListener != null && itemSwipeEnabled) { + mOnItemSwipeListener.onItemSwiped(viewHolder, getViewHolderPosition(viewHolder)); + } } public void onItemSwiping(Canvas canvas, RecyclerView.ViewHolder viewHolder, float dX, float dY, boolean isCurrentlyActive) { From a71cb5e0d59b4053b19ee10af36d09083e526273 Mon Sep 17 00:00:00 2001 From: HarlanLuo Date: Thu, 25 Jan 2018 11:36:22 +0800 Subject: [PATCH 005/653] Fix #1883 --- .../java/com/chad/library/adapter/base/BaseQuickAdapter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java b/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java index 63454a3fb..d9cfe19ad 100755 --- a/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java +++ b/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java @@ -607,7 +607,7 @@ public List getData() { */ @Nullable public T getItem(@IntRange(from = 0) int position) { - if (position < mData.size()) + if (position >= 0 && position < mData.size()) return mData.get(position); else return null; From 765731a365a5011c4f2e55171265193ffab87fee Mon Sep 17 00:00:00 2001 From: Allen Date: Thu, 1 Feb 2018 19:27:33 +0800 Subject: [PATCH 006/653] 1.Decoupling click events 2. Adopt suggestions https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/1699 3. fix https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/1983 --- .../chad/library/adapter/base/loadmore/LoadMoreView.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/library/src/main/java/com/chad/library/adapter/base/loadmore/LoadMoreView.java b/library/src/main/java/com/chad/library/adapter/base/loadmore/LoadMoreView.java index b7ca523cb..1cd65d847 100644 --- a/library/src/main/java/com/chad/library/adapter/base/loadmore/LoadMoreView.java +++ b/library/src/main/java/com/chad/library/adapter/base/loadmore/LoadMoreView.java @@ -54,17 +54,17 @@ public void convert(BaseViewHolder holder) { } private void visibleLoading(BaseViewHolder holder, boolean visible) { - holder.setVisible(getLoadingViewId(), visible); + holder.setGone(getLoadingViewId(), visible); } private void visibleLoadFail(BaseViewHolder holder, boolean visible) { - holder.setVisible(getLoadFailViewId(), visible); + holder.setGone(getLoadFailViewId(), visible); } private void visibleLoadEnd(BaseViewHolder holder, boolean visible) { final int loadEndViewId = getLoadEndViewId(); if (loadEndViewId != 0) { - holder.setVisible(loadEndViewId, visible); + holder.setGone(loadEndViewId, visible); } } From 902485d80bff413b36e41cecc51973e6faa11426 Mon Sep 17 00:00:00 2001 From: Allen Date: Wed, 7 Feb 2018 09:55:21 +0800 Subject: [PATCH 007/653] 1.upgrade lib Version 2. update com.android.tools.build:gradle:3.0.1 --- app/build.gradle | 2 +- build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f54b0c599..9742eebdd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -31,6 +31,6 @@ dependencies { implementation 'com.android.support:design:26.1.0' implementation 'com.android.support:cardview-v7:26.1.0' implementation 'com.android.support:appcompat-v7:26.1.0' - implementation 'com.kyleduo.switchbutton:library:1.4.4' + implementation 'com.kyleduo.switchbutton:library:2.0.0' implementation 'com.orhanobut:logger:2.1.1' } diff --git a/build.gradle b/build.gradle index 28cacc2eb..0ee3ea27e 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.0.0' + classpath 'com.android.tools.build:gradle:3.0.1' } } From 09658e1a4b6d07d32f1410aea4a32df689fa2f79 Mon Sep 17 00:00:00 2001 From: Allen Date: Fri, 9 Feb 2018 12:38:41 +0800 Subject: [PATCH 008/653] 1.Receive advice https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/2012 --- app/src/main/AndroidManifest.xml | 2 +- app/src/main/res/layout/loading_view.xml | 2 +- app/src/main/res/layout/view_load_more.xml | 8 ++++---- .../adapter/base/loadmore/SimpleLoadMoreView.java | 2 +- ..._loading.png => brvah_sample_footer_loading.png} | Bin ...xml => brvah_sample_footer_loading_progress.xml} | 2 +- ...load_more.xml => brvah_quick_view_load_more.xml} | 6 +++--- library/src/main/res/values-en/strings.xml | 6 +++--- library/src/main/res/values/strings.xml | 8 ++++---- 9 files changed, 18 insertions(+), 18 deletions(-) rename library/src/main/res/drawable/{sample_footer_loading.png => brvah_sample_footer_loading.png} (100%) mode change 100755 => 100644 rename library/src/main/res/drawable/{sample_footer_loading_progress.xml => brvah_sample_footer_loading_progress.xml} (83%) mode change 100755 => 100644 rename library/src/main/res/layout/{quick_view_load_more.xml => brvah_quick_view_load_more.xml} (92%) mode change 100755 => 100644 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a1b6bf0c1..b429d8241 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,7 +8,7 @@ android:name=".MyApplication" android:allowBackup="true" android:icon="@mipmap/logo" - android:label="@string/app_name" + android:label="@string/brvah_app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> diff --git a/app/src/main/res/layout/loading_view.xml b/app/src/main/res/layout/loading_view.xml index 634a40f43..04ba87727 100644 --- a/app/src/main/res/layout/loading_view.xml +++ b/app/src/main/res/layout/loading_view.xml @@ -22,7 +22,7 @@ android:layout_marginLeft="8dp" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="@string/loading" + android:text="@string/brvah_loading" android:textColor="@color/txt_color"/> \ No newline at end of file diff --git a/app/src/main/res/layout/view_load_more.xml b/app/src/main/res/layout/view_load_more.xml index d19d86947..de58442e9 100644 --- a/app/src/main/res/layout/view_load_more.xml +++ b/app/src/main/res/layout/view_load_more.xml @@ -17,14 +17,14 @@ android:layout_height="wrap_content" style="?android:attr/progressBarStyleSmall" android:layout_marginRight="@dimen/dp_4" - android:indeterminateDrawable="@drawable/sample_footer_loading_progress"/> + android:indeterminateDrawable="@drawable/brvah_sample_footer_loading_progress"/> @@ -42,7 +42,7 @@ android:layout_height="wrap_content" android:layout_gravity="center" android:textColor="#0dddb8" - android:text="@string/load_failed"/> + android:text="@string/brvah_load_failed"/> @@ -56,7 +56,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" - android:text="@string/load_end" + android:text="@string/brvah_load_end" android:textColor="@android:color/darker_gray"/> \ No newline at end of file diff --git a/library/src/main/java/com/chad/library/adapter/base/loadmore/SimpleLoadMoreView.java b/library/src/main/java/com/chad/library/adapter/base/loadmore/SimpleLoadMoreView.java index f51594a21..730f65cfd 100644 --- a/library/src/main/java/com/chad/library/adapter/base/loadmore/SimpleLoadMoreView.java +++ b/library/src/main/java/com/chad/library/adapter/base/loadmore/SimpleLoadMoreView.java @@ -11,7 +11,7 @@ public final class SimpleLoadMoreView extends LoadMoreView { @Override public int getLayoutId() { - return R.layout.quick_view_load_more; + return R.layout.brvah_quick_view_load_more; } @Override diff --git a/library/src/main/res/drawable/sample_footer_loading.png b/library/src/main/res/drawable/brvah_sample_footer_loading.png old mode 100755 new mode 100644 similarity index 100% rename from library/src/main/res/drawable/sample_footer_loading.png rename to library/src/main/res/drawable/brvah_sample_footer_loading.png diff --git a/library/src/main/res/drawable/sample_footer_loading_progress.xml b/library/src/main/res/drawable/brvah_sample_footer_loading_progress.xml old mode 100755 new mode 100644 similarity index 83% rename from library/src/main/res/drawable/sample_footer_loading_progress.xml rename to library/src/main/res/drawable/brvah_sample_footer_loading_progress.xml index 1b4c51044..7143fc5c3 --- a/library/src/main/res/drawable/sample_footer_loading_progress.xml +++ b/library/src/main/res/drawable/brvah_sample_footer_loading_progress.xml @@ -3,7 +3,7 @@ @@ -40,7 +40,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" - android:text="@string/load_failed"/> + android:text="@string/brvah_load_failed"/> @@ -54,7 +54,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" - android:text="@string/load_end" + android:text="@string/brvah_load_end" android:textColor="@android:color/darker_gray"/> \ No newline at end of file diff --git a/library/src/main/res/values-en/strings.xml b/library/src/main/res/values-en/strings.xml index e80a6c3d8..e0b74061f 100644 --- a/library/src/main/res/values-en/strings.xml +++ b/library/src/main/res/values-en/strings.xml @@ -1,5 +1,5 @@ - Loading... - load more failed - No more data + Loading... + load more failed + No more data diff --git a/library/src/main/res/values/strings.xml b/library/src/main/res/values/strings.xml index e75309ced..1203d59da 100644 --- a/library/src/main/res/values/strings.xml +++ b/library/src/main/res/values/strings.xml @@ -1,6 +1,6 @@ - Library - 正在加载中... - 加载失败,请点我重试 - 没有更多数据 + Library + 正在加载中... + 加载失败,请点我重试 + 没有更多数据 From fbbd675230ab32a730a125a77cbf2c44f81f593e Mon Sep 17 00:00:00 2001 From: "AllenCoder@126.com" Date: Mon, 19 Mar 2018 21:56:13 +0800 Subject: [PATCH 009/653] Accept suggestions https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/2064 --- .../java/com/chad/library/adapter/base/BaseQuickAdapter.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java b/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java index d9cfe19ad..840aaaceb 100755 --- a/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java +++ b/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java @@ -1342,9 +1342,11 @@ public void setEmptyView(int layoutResId, ViewGroup viewGroup) { /** * bind recyclerView {@link #bindToRecyclerView(RecyclerView)} before use! - * + * Recommend you to use {@link #setEmptyView(layoutResId,viewGroup)} * @see #bindToRecyclerView(RecyclerView) + * */ + @Deprecated public void setEmptyView(int layoutResId) { checkNotNull(); setEmptyView(layoutResId, getRecyclerView()); From 9b80684d4b51c284b7441464acc755bbf51acdab Mon Sep 17 00:00:00 2001 From: Allen Date: Tue, 20 Mar 2018 18:58:34 +0800 Subject: [PATCH 010/653] 1.Receive advice https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/2054 --- .../com/chad/library/adapter/base/BaseQuickAdapter.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java b/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java index 840aaaceb..5cd47b371 100755 --- a/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java +++ b/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java @@ -444,7 +444,14 @@ public void setDuration(int duration) { mDuration = duration; } - + /** + * If you have added headeview, the notification view refreshes. + * Do not need to care about the number of headview, only need to pass in the position of the final view + * @param position + */ + public final void refreshNotifyItemChanged(int position) { + notifyItemChanged(position + getHeaderLayoutCount()); + } /** * Same as QuickAdapter#QuickAdapter(Context,int) but with * some initialization data. From dcd248d7917641361adf2bd367bcaaf4f0055357 Mon Sep 17 00:00:00 2001 From: chaychan <844738237@qq.com> Date: Fri, 30 Mar 2018 12:25:00 +0800 Subject: [PATCH 011/653] =?UTF-8?q?=E6=8F=90=E4=BA=A4MultipleItemRvAdapter?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81=E4=BB=A5=E5=8F=8Ademo?= =?UTF-8?q?=E4=B8=AD=E6=B7=BB=E5=8A=A0=E5=85=B6=E4=BD=BF=E7=94=A8=E7=A4=BA?= =?UTF-8?q?=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 2 + .../ChooseMultipleItemUseTypeActivity.java | 39 ++++++++ .../HomeActivity.java | 2 +- .../MultipleItemRvAdapterUseActivity.java | 60 ++++++++++++ .../adapter/DemoMultipleItemRvAdapter.java | 65 +++++++++++++ .../adapter/provider/ImgItemProvider.java | 45 +++++++++ .../adapter/provider/TextImgItemProvider.java | 45 +++++++++ .../adapter/provider/TextItemProvider.java | 40 ++++++++ .../data/DataServer.java | 14 +++ .../entity/NormalMultipleEntity.java | 28 ++++++ ...activity_choose_multiple_item_use_type.xml | 90 ++++++++++++++++++ .../adapter/base/MultipleItemRvAdapter.java | 95 +++++++++++++++++++ .../base/annotation/ItemProviderTag.java | 20 ++++ .../base/provider/BaseItemProvider.java | 26 +++++ .../adapter/base/util/ProviderDelegate.java | 35 +++++++ 15 files changed, 605 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/chad/baserecyclerviewadapterhelper/ChooseMultipleItemUseTypeActivity.java create mode 100644 app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemRvAdapterUseActivity.java create mode 100644 app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/DemoMultipleItemRvAdapter.java create mode 100644 app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java create mode 100644 app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextImgItemProvider.java create mode 100644 app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java create mode 100644 app/src/main/java/com/chad/baserecyclerviewadapterhelper/entity/NormalMultipleEntity.java create mode 100644 app/src/main/res/layout/activity_choose_multiple_item_use_type.xml create mode 100644 library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java create mode 100644 library/src/main/java/com/chad/library/adapter/base/annotation/ItemProviderTag.java create mode 100644 library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java create mode 100644 library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b429d8241..64c72b114 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -22,7 +22,9 @@ + + diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/ChooseMultipleItemUseTypeActivity.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/ChooseMultipleItemUseTypeActivity.java new file mode 100644 index 000000000..bfa232ebe --- /dev/null +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/ChooseMultipleItemUseTypeActivity.java @@ -0,0 +1,39 @@ +package com.chad.baserecyclerviewadapterhelper; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; + +import com.chad.baserecyclerviewadapterhelper.base.BaseActivity; + +/** + * https://github.com/chaychan + * @author ChayChan + * @description: ChooseMultipleItemUseType + * @date 2018/3/30 10:14 + */ + +public class ChooseMultipleItemUseTypeActivity extends BaseActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_choose_multiple_item_use_type); + setTitle("MultipleItem Use"); + setBackBtn(); + + findViewById(R.id.card_view1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + startActivity(new Intent(ChooseMultipleItemUseTypeActivity.this,MultipleItemUseActivity.class)); + } + }); + + findViewById(R.id.card_view2).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + startActivity(new Intent(ChooseMultipleItemUseTypeActivity.this,MultipleItemRvAdapterUseActivity.class)); + } + }); + } +} diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/HomeActivity.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/HomeActivity.java index 1cfaa02a4..2325e5337 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/HomeActivity.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/HomeActivity.java @@ -18,7 +18,7 @@ * https://github.com/CymChad/BaseRecyclerViewAdapterHelper */ public class HomeActivity extends AppCompatActivity { - private static final Class[] ACTIVITY = {AnimationUseActivity.class, MultipleItemUseActivity.class, HeaderAndFooterUseActivity.class, PullToRefreshUseActivity.class, SectionUseActivity.class, EmptyViewUseActivity.class, ItemDragAndSwipeUseActivity.class, ItemClickActivity.class, ExpandableUseActivity.class, DataBindingUseActivity.class,UpFetchUseActivity.class}; + private static final Class[] ACTIVITY = {AnimationUseActivity.class, ChooseMultipleItemUseTypeActivity.class, HeaderAndFooterUseActivity.class, PullToRefreshUseActivity.class, SectionUseActivity.class, EmptyViewUseActivity.class, ItemDragAndSwipeUseActivity.class, ItemClickActivity.class, ExpandableUseActivity.class, DataBindingUseActivity.class,UpFetchUseActivity.class}; private static final String[] TITLE = {"Animation", "MultipleItem", "Header/Footer", "PullToRefresh", "Section", "EmptyView", "DragAndSwipe", "ItemClick", "ExpandableItem", "DataBinding", "UpFetchData"}; private static final int[] IMG = {R.mipmap.gv_animation, R.mipmap.gv_multipleltem, R.mipmap.gv_header_and_footer, R.mipmap.gv_pulltorefresh, R.mipmap.gv_section, R.mipmap.gv_empty, R.mipmap.gv_drag_and_swipe, R.mipmap.gv_item_click, R.mipmap.gv_expandable, R.mipmap.gv_databinding,R.drawable.gv_up_fetch}; private ArrayList mDataList; diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemRvAdapterUseActivity.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemRvAdapterUseActivity.java new file mode 100644 index 000000000..814a894be --- /dev/null +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemRvAdapterUseActivity.java @@ -0,0 +1,60 @@ +package com.chad.baserecyclerviewadapterhelper; + +import android.os.Bundle; +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.RecyclerView; + +import com.chad.baserecyclerviewadapterhelper.adapter.DemoMultipleItemRvAdapter; +import com.chad.baserecyclerviewadapterhelper.base.BaseActivity; +import com.chad.baserecyclerviewadapterhelper.data.DataServer; +import com.chad.baserecyclerviewadapterhelper.entity.MultipleItem; +import com.chad.baserecyclerviewadapterhelper.entity.NormalMultipleEntity; +import com.chad.library.adapter.base.BaseQuickAdapter; + +import java.util.List; + +/** + * https://github.com/chaychan + * + * @author ChayChan + * @description: MultipleItemRvAdapter's usage + * @date 2018/3/30 10:54 + */ + +public class MultipleItemRvAdapterUseActivity extends BaseActivity { + + private RecyclerView mRecyclerView; + private List mData; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_multiple_item_use); + + setTitle("MultipleItemRvAdapter"); + setBackBtn(); + + mRecyclerView = (RecyclerView) findViewById(R.id.rv_list); + GridLayoutManager manager = new GridLayoutManager(this, 4); + mRecyclerView.setLayoutManager(manager); + + mData = DataServer.getNormalMultipleEntities(); + DemoMultipleItemRvAdapter multipleItemAdapter = new DemoMultipleItemRvAdapter(mData); + + multipleItemAdapter.setSpanSizeLookup(new BaseQuickAdapter.SpanSizeLookup() { + @Override + public int getSpanSize(GridLayoutManager gridLayoutManager, int position) { + int type = mData.get(position).type; + if (type == NormalMultipleEntity.SINGLE_TEXT){ + return MultipleItem.TEXT_SPAN_SIZE; + }else if (type == NormalMultipleEntity.SINGLE_IMG){ + return MultipleItem.IMG_SPAN_SIZE; + }else{ + return MultipleItem.IMG_TEXT_SPAN_SIZE; + } + } + }); + + mRecyclerView.setAdapter(multipleItemAdapter); + } +} diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/DemoMultipleItemRvAdapter.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/DemoMultipleItemRvAdapter.java new file mode 100644 index 000000000..291036e23 --- /dev/null +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/DemoMultipleItemRvAdapter.java @@ -0,0 +1,65 @@ +package com.chad.baserecyclerviewadapterhelper.adapter; + +import android.support.annotation.Nullable; + +import com.chad.baserecyclerviewadapterhelper.adapter.provider.ImgItemProvider; +import com.chad.baserecyclerviewadapterhelper.adapter.provider.TextImgItemProvider; +import com.chad.baserecyclerviewadapterhelper.adapter.provider.TextItemProvider; +import com.chad.baserecyclerviewadapterhelper.entity.NormalMultipleEntity; +import com.chad.library.adapter.base.MultipleItemRvAdapter; + +import java.util.List; + +/** + * https://github.com/chaychan + * @author ChayChan + * @description: MultipleItemRvAdapter demo + * @date 2018/3/30 11:28 + */ + +public class DemoMultipleItemRvAdapter extends MultipleItemRvAdapter { + + public static final int TYPE_TEXT = 100; + public static final int TYPE_IMG = 200; + public static final int TYPE_TEXT_IMG = 300; + + public DemoMultipleItemRvAdapter(@Nullable List data) { + super(data); + + //构造函数若有传其他参数可以在调用finishInitialize()之前进行赋值,赋值给全局变量 + //这样getViewType()和registerItemProvider()方法中可以获取到传过来的值 + //getViewType()中可能因为某些业务逻辑,需要将某个值传递过来进行判断,返回对应的viewType + //registerItemProvider()中可以将值传递给ItemProvider + + //If the constructor has other parameters, it needs to be assigned before calling finishInitialize() and assigned to the global variable + // This getViewType () and registerItemProvider () method can get the value passed over + // getViewType () may be due to some business logic, you need to pass a value to judge, return the corresponding viewType + //RegisterItemProvider() can pass value to ItemProvider + + finishInitialize(); + } + + @Override + protected int getViewType(NormalMultipleEntity entity) { + //根据实体类判断并返回对应的viewType,具体判断逻辑因业务不同,这里这是简单通过判断type属性 + //According to the entity class to determine and return the corresponding viewType, + //the specific judgment logic is different because of the business, here is simply by judging the type attribute + if (entity.type == NormalMultipleEntity.SINGLE_TEXT){ + return TYPE_TEXT; + }else if (entity.type == NormalMultipleEntity.SINGLE_IMG){ + return TYPE_IMG; + }else if (entity.type == NormalMultipleEntity.TEXT_IMG){ + return TYPE_TEXT_IMG; + } + return 0; + } + + @Override + public void registerItemProvider() { + //注册相关的条目provider + //Register related entries provider + mProviderDelegate.registerProvider(new TextItemProvider()); + mProviderDelegate.registerProvider(new ImgItemProvider()); + mProviderDelegate.registerProvider(new TextImgItemProvider()); + } +} diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java new file mode 100644 index 000000000..f3f9eb4b6 --- /dev/null +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java @@ -0,0 +1,45 @@ +package com.chad.baserecyclerviewadapterhelper.adapter.provider; + +import android.widget.Toast; + +import com.chad.baserecyclerviewadapterhelper.R; +import com.chad.baserecyclerviewadapterhelper.adapter.DemoMultipleItemRvAdapter; +import com.chad.baserecyclerviewadapterhelper.entity.NormalMultipleEntity; +import com.chad.library.adapter.base.BaseViewHolder; +import com.chad.library.adapter.base.annotation.ItemProviderTag; +import com.chad.library.adapter.base.provider.BaseItemProvider; + +/** + * https://github.com/chaychan + * + * @author ChayChan + * @description: Img ItemProvider + * @date 2018/3/30 11:39 + */ + +@ItemProviderTag( + viewType = DemoMultipleItemRvAdapter.TYPE_IMG, + layout = R.layout.item_image_view +) +public class ImgItemProvider extends BaseItemProvider { + + @Override + public void convert(BaseViewHolder helper, NormalMultipleEntity data, int position) { + if (position % 2 == 0) { + helper.setImageResource(R.id.iv, R.mipmap.animation_img1); + }else{ + helper.setImageResource(R.id.iv, R.mipmap.animation_img2); + } + } + + @Override + public void onClick(BaseViewHolder helper, NormalMultipleEntity data, int position) { + Toast.makeText(mContext, "click", Toast.LENGTH_SHORT).show(); + } + + @Override + public boolean onLongClick(BaseViewHolder helper, NormalMultipleEntity data, int position) { + Toast.makeText(mContext, "longClick", Toast.LENGTH_SHORT).show(); + return true; + } +} diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextImgItemProvider.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextImgItemProvider.java new file mode 100644 index 000000000..9c83e19d3 --- /dev/null +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextImgItemProvider.java @@ -0,0 +1,45 @@ +package com.chad.baserecyclerviewadapterhelper.adapter.provider; + +import android.widget.Toast; + +import com.chad.baserecyclerviewadapterhelper.R; +import com.chad.baserecyclerviewadapterhelper.adapter.DemoMultipleItemRvAdapter; +import com.chad.baserecyclerviewadapterhelper.entity.NormalMultipleEntity; +import com.chad.library.adapter.base.BaseViewHolder; +import com.chad.library.adapter.base.annotation.ItemProviderTag; +import com.chad.library.adapter.base.provider.BaseItemProvider; + +/** + * https://github.com/chaychan + * @author ChayChan + * @description: Text Img ItemProvider + * @date 2018/3/30 11:39 + */ + +@ItemProviderTag( + viewType = DemoMultipleItemRvAdapter.TYPE_TEXT_IMG, + layout = R.layout.item_img_text_view +) +public class TextImgItemProvider extends BaseItemProvider { + + @Override + public void convert(BaseViewHolder helper, NormalMultipleEntity data, int position) { + helper.setText(R.id.tv, data.content); + if (position % 2 == 0) { + helper.setImageResource(R.id.iv, R.mipmap.animation_img1); + }else{ + helper.setImageResource(R.id.iv, R.mipmap.animation_img2); + } + } + + @Override + public void onClick(BaseViewHolder helper, NormalMultipleEntity data, int position) { + Toast.makeText(mContext, "click", Toast.LENGTH_SHORT).show(); + } + + @Override + public boolean onLongClick(BaseViewHolder helper, NormalMultipleEntity data, int position) { + Toast.makeText(mContext, "longClick", Toast.LENGTH_SHORT).show(); + return true; + } +} diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java new file mode 100644 index 000000000..d0a17752b --- /dev/null +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java @@ -0,0 +1,40 @@ +package com.chad.baserecyclerviewadapterhelper.adapter.provider; + +import android.widget.Toast; + +import com.chad.baserecyclerviewadapterhelper.R; +import com.chad.baserecyclerviewadapterhelper.adapter.DemoMultipleItemRvAdapter; +import com.chad.baserecyclerviewadapterhelper.entity.NormalMultipleEntity; +import com.chad.library.adapter.base.BaseViewHolder; +import com.chad.library.adapter.base.annotation.ItemProviderTag; +import com.chad.library.adapter.base.provider.BaseItemProvider; + +/** + * https://github.com/chaychan + * @author ChayChan + * @description: Text ItemProvider + * @date 2018/3/30 11:39 + */ + +@ItemProviderTag( + viewType = DemoMultipleItemRvAdapter.TYPE_TEXT, + layout = R.layout.item_text_view +) +public class TextItemProvider extends BaseItemProvider { + + @Override + public void convert(BaseViewHolder helper, NormalMultipleEntity data, int position) { + helper.setText(R.id.tv, data.content); + } + + @Override + public void onClick(BaseViewHolder helper, NormalMultipleEntity data, int position) { + Toast.makeText(mContext, "click", Toast.LENGTH_SHORT).show(); + } + + @Override + public boolean onLongClick(BaseViewHolder helper, NormalMultipleEntity data, int position) { + Toast.makeText(mContext, "longClick", Toast.LENGTH_SHORT).show(); + return true; + } +} diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/data/DataServer.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/data/DataServer.java index 3e18a4431..fd23a3819 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/data/DataServer.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/data/DataServer.java @@ -3,6 +3,7 @@ import com.chad.baserecyclerviewadapterhelper.entity.MultipleItem; import com.chad.baserecyclerviewadapterhelper.entity.MySection; +import com.chad.baserecyclerviewadapterhelper.entity.NormalMultipleEntity; import com.chad.baserecyclerviewadapterhelper.entity.Status; import com.chad.baserecyclerviewadapterhelper.entity.Video; @@ -16,6 +17,7 @@ public class DataServer { private static final String HTTPS_AVATARS1_GITHUBUSERCONTENT_COM_LINK = "https://avatars1.githubusercontent.com/u/7698209?v=3&s=460"; private static final String CYM_CHAD = "CymChad"; + private static final String CHAY_CHAN = "ChayChan"; private DataServer() { } @@ -96,6 +98,18 @@ public static List getMultipleItemData() { return list; } + public static List getNormalMultipleEntities() { + List list = new ArrayList<>(); + for (int i = 0; i <= 4; i++) { + list.add(new NormalMultipleEntity(NormalMultipleEntity.SINGLE_IMG)); + list.add(new NormalMultipleEntity(NormalMultipleEntity.SINGLE_TEXT,CHAY_CHAN)); + list.add(new NormalMultipleEntity(NormalMultipleEntity.TEXT_IMG,CHAY_CHAN)); + list.add(new NormalMultipleEntity(NormalMultipleEntity.TEXT_IMG,CYM_CHAD)); + list.add(new NormalMultipleEntity(NormalMultipleEntity.TEXT_IMG,CHAY_CHAN)); + } + return list; + } + // public static List getMultipleChildView() { // List list = new ArrayList<>(); // for (int i = 0; i <= 4; i++) { diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/entity/NormalMultipleEntity.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/entity/NormalMultipleEntity.java new file mode 100644 index 000000000..2ed0a3263 --- /dev/null +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/entity/NormalMultipleEntity.java @@ -0,0 +1,28 @@ +package com.chad.baserecyclerviewadapterhelper.entity; + +/** + * https://github.com/chaychan + * + * @author ChayChan + * @description: NormalEntity,need not implements MultiItemEntity interface + * @date 2018/3/30 11:13 + */ + +public class NormalMultipleEntity { + + public static final int SINGLE_TEXT = 1; + public static final int SINGLE_IMG = 2; + public static final int TEXT_IMG = 3; + + public int type; + public String content; + + public NormalMultipleEntity(int type) { + this.type = type; + } + + public NormalMultipleEntity(int type, String content) { + this.type = type; + this.content = content; + } +} diff --git a/app/src/main/res/layout/activity_choose_multiple_item_use_type.xml b/app/src/main/res/layout/activity_choose_multiple_item_use_type.xml new file mode 100644 index 000000000..62e991187 --- /dev/null +++ b/app/src/main/res/layout/activity_choose_multiple_item_use_type.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java b/library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java new file mode 100644 index 000000000..48279349e --- /dev/null +++ b/library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java @@ -0,0 +1,95 @@ +package com.chad.library.adapter.base; + +import android.support.annotation.Nullable; +import android.util.SparseArray; +import android.view.View; + +import com.chad.library.adapter.base.annotation.ItemProviderTag; +import com.chad.library.adapter.base.provider.BaseItemProvider; +import com.chad.library.adapter.base.util.MultiTypeDelegate; +import com.chad.library.adapter.base.util.ProviderDelegate; + +import java.util.List; + +/** + * https://github.com/chaychan + * @author ChayChan + * @description: + * When there are multiple entries, avoid too much business logic in convert(),Put the logic of each item in the corresponding ItemProvider + * 当有多种条目的时候,避免在convert()中做太多的业务逻辑,把逻辑放在对应的ItemProvider中 + * @date 2018/3/21 9:55 + */ + +public abstract class MultipleItemRvAdapter extends BaseQuickAdapter { + + private SparseArray mItemProviders; + protected ProviderDelegate mProviderDelegate; + + public MultipleItemRvAdapter(@Nullable List data) { + super(data); + } + + /** + * 用于adapter构造函数完成参数的赋值后调用 + * Called after the assignment of the argument to the adapter constructor + */ + public void finishInitialize() { + mProviderDelegate = new ProviderDelegate(); + + setMultiTypeDelegate(new MultiTypeDelegate() { + + @Override + protected int getItemType(T t) { + return getViewType(t); + } + }); + + registerItemProvider(); + + mItemProviders = mProviderDelegate.getItemProviders(); + for (int i = 0; i < mItemProviders.size(); i++) { + int key = mItemProviders.keyAt(i); + + BaseItemProvider provider = mItemProviders.get(key); + provider.mData = mData; + + ItemProviderTag tag = provider.getClass().getAnnotation(ItemProviderTag.class); + getMultiTypeDelegate().registerItemType(key, tag.layout()); + } + } + + protected abstract int getViewType(T t); + + public abstract void registerItemProvider(); + + @Override + protected void convert(BaseViewHolder helper, T item) { + int itemViewType = helper.getItemViewType(); + BaseItemProvider provider = mItemProviders.get(itemViewType); + + provider.mContext = helper.itemView.getContext(); + + int position = helper.getLayoutPosition() - getHeaderLayoutCount(); + provider.convert(helper, item, position); + + bindClick(helper, item, position, provider); + } + + private void bindClick(final BaseViewHolder helper, final T item, final int position, final BaseItemProvider provider) { + View itemView = helper.itemView; + + itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + provider.onClick(helper, item, position); + } + }); + + itemView.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + return provider.onLongClick(helper, item, position); + } + }); + } +} diff --git a/library/src/main/java/com/chad/library/adapter/base/annotation/ItemProviderTag.java b/library/src/main/java/com/chad/library/adapter/base/annotation/ItemProviderTag.java new file mode 100644 index 000000000..ad62625c4 --- /dev/null +++ b/library/src/main/java/com/chad/library/adapter/base/annotation/ItemProviderTag.java @@ -0,0 +1,20 @@ +package com.chad.library.adapter.base.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * https://github.com/chaychan + * @author ChayChan + * @description: ItemProvider's annotation + * @date 2018/3/21 10:48 + */ + +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +public @interface ItemProviderTag { + int viewType(); + int layout(); +} diff --git a/library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java b/library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java new file mode 100644 index 000000000..d357b2bcd --- /dev/null +++ b/library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java @@ -0,0 +1,26 @@ +package com.chad.library.adapter.base.provider; + +import android.content.Context; + +import com.chad.library.adapter.base.BaseViewHolder; + +import java.util.List; + +/** + * https://github.com/chaychan + * @author ChayChan + * @description: The base class of ItemProvider + * @date 2018/3/21 10:41 + */ + +public abstract class BaseItemProvider { + + public Context mContext; + public List mData; + + public abstract void convert(BaseViewHolder helper, T data, int position); + + public abstract void onClick(BaseViewHolder helper, T data, int position); + + public abstract boolean onLongClick(BaseViewHolder helper, T data, int position); +} diff --git a/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java b/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java new file mode 100644 index 000000000..a5a1f8d06 --- /dev/null +++ b/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java @@ -0,0 +1,35 @@ +package com.chad.library.adapter.base.util; + +import android.util.SparseArray; + +import com.chad.library.adapter.base.annotation.ItemProviderTag; +import com.chad.library.adapter.base.provider.BaseItemProvider; + +/** + * https://github.com/chaychan + * @author ChayChan + * @date 2018/3/21 11:04 + */ + +public class ProviderDelegate { + + private SparseArray mItemProviders = new SparseArray<>(); + private static ProviderDelegate mInstance; + + public void registerProvider(BaseItemProvider provider){ + ItemProviderTag tag = provider.getClass().getAnnotation(ItemProviderTag.class); + if (tag == null){ + throw new RuntimeException("ItemProviderTag not def layout"); + } + + int viewType = tag.viewType(); + if (mItemProviders.get(viewType) == null){ + mItemProviders.put(viewType,provider); + } + } + + public SparseArray getItemProviders(){ + return mItemProviders; + } + +} From ce4aa3673d75ebf0dc2d010dca15112cbd541dc5 Mon Sep 17 00:00:00 2001 From: chaychan <844738237@qq.com> Date: Fri, 30 Mar 2018 16:58:31 +0800 Subject: [PATCH 012/653] =?UTF-8?q?=E6=8F=90=E4=BA=A4MultipleItemRvAdapter?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81=E4=BB=A5=E5=8F=8Ademo?= =?UTF-8?q?=E4=B8=AD=E6=B7=BB=E5=8A=A0=E5=85=B6=E4=BD=BF=E7=94=A8=E7=A4=BA?= =?UTF-8?q?=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MultipleItemRvAdapterUseActivity.java | 3 +-- .../com/chad/library/adapter/base/util/ProviderDelegate.java | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemRvAdapterUseActivity.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemRvAdapterUseActivity.java index 814a894be..81c324ea7 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemRvAdapterUseActivity.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemRvAdapterUseActivity.java @@ -23,7 +23,6 @@ public class MultipleItemRvAdapterUseActivity extends BaseActivity { - private RecyclerView mRecyclerView; private List mData; @Override @@ -34,7 +33,7 @@ protected void onCreate(Bundle savedInstanceState) { setTitle("MultipleItemRvAdapter"); setBackBtn(); - mRecyclerView = (RecyclerView) findViewById(R.id.rv_list); + RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.rv_list); GridLayoutManager manager = new GridLayoutManager(this, 4); mRecyclerView.setLayoutManager(manager); diff --git a/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java b/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java index a5a1f8d06..95a2af36d 100644 --- a/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java +++ b/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java @@ -14,7 +14,6 @@ public class ProviderDelegate { private SparseArray mItemProviders = new SparseArray<>(); - private static ProviderDelegate mInstance; public void registerProvider(BaseItemProvider provider){ ItemProviderTag tag = provider.getClass().getAnnotation(ItemProviderTag.class); From 48790cda6ee7d2309819a5bfb68ad04379ac90f5 Mon Sep 17 00:00:00 2001 From: chaychan <844738237@qq.com> Date: Fri, 30 Mar 2018 17:11:23 +0800 Subject: [PATCH 013/653] =?UTF-8?q?=E6=8F=90=E4=BA=A4MultipleItemRvAdapter?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81=E4=BB=A5=E5=8F=8Ademo?= =?UTF-8?q?=E4=B8=AD=E6=B7=BB=E5=8A=A0=E5=85=B6=E4=BD=BF=E7=94=A8=E7=A4=BA?= =?UTF-8?q?=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../util/ItemProviderAnnotationException.java | 17 +++++++++++++++++ .../adapter/base/util/ProviderDelegate.java | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 library/src/main/java/com/chad/library/adapter/base/util/ItemProviderAnnotationException.java diff --git a/library/src/main/java/com/chad/library/adapter/base/util/ItemProviderAnnotationException.java b/library/src/main/java/com/chad/library/adapter/base/util/ItemProviderAnnotationException.java new file mode 100644 index 000000000..0142e2d6d --- /dev/null +++ b/library/src/main/java/com/chad/library/adapter/base/util/ItemProviderAnnotationException.java @@ -0,0 +1,17 @@ +package com.chad.library.adapter.base.util; + +/** + * https://github.com/chaychan + * + * @author ChayChan + * @description: AnnotationException + * @date 2018/3/30 17:07 + */ + +public class ItemProviderAnnotationException extends RuntimeException { + + public ItemProviderAnnotationException(String message) { + super(message); + } + +} diff --git a/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java b/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java index 95a2af36d..b694f6bbe 100644 --- a/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java +++ b/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java @@ -18,7 +18,7 @@ public class ProviderDelegate { public void registerProvider(BaseItemProvider provider){ ItemProviderTag tag = provider.getClass().getAnnotation(ItemProviderTag.class); if (tag == null){ - throw new RuntimeException("ItemProviderTag not def layout"); + throw new ItemProviderAnnotationException("ItemProviderTag not def layout"); } int viewType = tag.viewType(); From b090c1e73466750224903470a2ef271bf2925a73 Mon Sep 17 00:00:00 2001 From: "AllenCoder@126.com" Date: Wed, 4 Apr 2018 11:20:03 +0800 Subject: [PATCH 014/653] 1 .merge upstream 2. upgrade gradle version 3. upgrdle plugin --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 0ee3ea27e..0f1313b9b 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.0.1' + classpath 'com.android.tools.build:gradle:3.1.0' } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 4d83b19cf..e2c612316 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Mar 08 09:33:00 CST 2017 +#Thu Mar 29 22:14:15 CST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip From 68136f7864895ca1ec7debaadd738a3509099284 Mon Sep 17 00:00:00 2001 From: chaychan <844738237@qq.com> Date: Wed, 4 Apr 2018 16:44:34 +0800 Subject: [PATCH 015/653] update README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2d210c794..a17c6090c 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ kotlin demo :[BRVAH_kotlin](https://github.com/AllenCoder/BRVAH_kotlin) # Document - [English](https://github.com/CymChad/BaseRecyclerViewAdapterHelper/wiki) - [中文](http://www.jianshu.com/p/b343fcff51b0) +- [多布局改进(MultipleItemRvAdapter的使用)](https://www.jianshu.com/p/a6cd8859c9fa) ## [UI](https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/694) ## Demo From 5c4faaf61bd9801fbaecd8bab8016df3652402dd Mon Sep 17 00:00:00 2001 From: chaychan <844738237@qq.com> Date: Mon, 9 Apr 2018 12:15:18 +0800 Subject: [PATCH 016/653] =?UTF-8?q?MultipleItemRvAdapter=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89ViewHolder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/DemoMultipleItemRvAdapter.java | 3 ++- .../adapter/provider/ImgItemProvider.java | 2 +- .../adapter/provider/TextImgItemProvider.java | 2 +- .../adapter/provider/TextItemProvider.java | 2 +- .../chad/library/adapter/base/MultipleItemRvAdapter.java | 6 +++--- .../library/adapter/base/provider/BaseItemProvider.java | 8 ++++---- 6 files changed, 12 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/DemoMultipleItemRvAdapter.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/DemoMultipleItemRvAdapter.java index 291036e23..966aac94f 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/DemoMultipleItemRvAdapter.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/DemoMultipleItemRvAdapter.java @@ -6,6 +6,7 @@ import com.chad.baserecyclerviewadapterhelper.adapter.provider.TextImgItemProvider; import com.chad.baserecyclerviewadapterhelper.adapter.provider.TextItemProvider; import com.chad.baserecyclerviewadapterhelper.entity.NormalMultipleEntity; +import com.chad.library.adapter.base.BaseViewHolder; import com.chad.library.adapter.base.MultipleItemRvAdapter; import java.util.List; @@ -17,7 +18,7 @@ * @date 2018/3/30 11:28 */ -public class DemoMultipleItemRvAdapter extends MultipleItemRvAdapter { +public class DemoMultipleItemRvAdapter extends MultipleItemRvAdapter { public static final int TYPE_TEXT = 100; public static final int TYPE_IMG = 200; diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java index f3f9eb4b6..09166ffe8 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java @@ -21,7 +21,7 @@ viewType = DemoMultipleItemRvAdapter.TYPE_IMG, layout = R.layout.item_image_view ) -public class ImgItemProvider extends BaseItemProvider { +public class ImgItemProvider extends BaseItemProvider { @Override public void convert(BaseViewHolder helper, NormalMultipleEntity data, int position) { diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextImgItemProvider.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextImgItemProvider.java index 9c83e19d3..b27e673b1 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextImgItemProvider.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextImgItemProvider.java @@ -20,7 +20,7 @@ viewType = DemoMultipleItemRvAdapter.TYPE_TEXT_IMG, layout = R.layout.item_img_text_view ) -public class TextImgItemProvider extends BaseItemProvider { +public class TextImgItemProvider extends BaseItemProvider { @Override public void convert(BaseViewHolder helper, NormalMultipleEntity data, int position) { diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java index d0a17752b..8ac0a8810 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java @@ -20,7 +20,7 @@ viewType = DemoMultipleItemRvAdapter.TYPE_TEXT, layout = R.layout.item_text_view ) -public class TextItemProvider extends BaseItemProvider { +public class TextItemProvider extends BaseItemProvider { @Override public void convert(BaseViewHolder helper, NormalMultipleEntity data, int position) { diff --git a/library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java b/library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java index 48279349e..bb8353835 100644 --- a/library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java +++ b/library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java @@ -20,7 +20,7 @@ * @date 2018/3/21 9:55 */ -public abstract class MultipleItemRvAdapter extends BaseQuickAdapter { +public abstract class MultipleItemRvAdapter extends BaseQuickAdapter { private SparseArray mItemProviders; protected ProviderDelegate mProviderDelegate; @@ -63,7 +63,7 @@ protected int getItemType(T t) { public abstract void registerItemProvider(); @Override - protected void convert(BaseViewHolder helper, T item) { + protected void convert(V helper, T item) { int itemViewType = helper.getItemViewType(); BaseItemProvider provider = mItemProviders.get(itemViewType); @@ -75,7 +75,7 @@ protected void convert(BaseViewHolder helper, T item) { bindClick(helper, item, position, provider); } - private void bindClick(final BaseViewHolder helper, final T item, final int position, final BaseItemProvider provider) { + private void bindClick(final V helper, final T item, final int position, final BaseItemProvider provider) { View itemView = helper.itemView; itemView.setOnClickListener(new View.OnClickListener() { diff --git a/library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java b/library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java index d357b2bcd..c045eb1eb 100644 --- a/library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java +++ b/library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java @@ -13,14 +13,14 @@ * @date 2018/3/21 10:41 */ -public abstract class BaseItemProvider { +public abstract class BaseItemProvider { public Context mContext; public List mData; - public abstract void convert(BaseViewHolder helper, T data, int position); + public abstract void convert(V helper, T data, int position); - public abstract void onClick(BaseViewHolder helper, T data, int position); + public abstract void onClick(V helper, T data, int position); - public abstract boolean onLongClick(BaseViewHolder helper, T data, int position); + public abstract boolean onLongClick(V helper, T data, int position); } From 18111e9f78b1d2dd7e010817e2977a32f0d5f983 Mon Sep 17 00:00:00 2001 From: chaychan <844738237@qq.com> Date: Mon, 9 Apr 2018 14:38:31 +0800 Subject: [PATCH 017/653] =?UTF-8?q?=E5=8E=BB=E9=99=A4README=E4=B8=ADMultip?= =?UTF-8?q?leItemRvAdapter=E7=9A=84=E4=BB=8B=E7=BB=8D=EF=BC=8C=E9=81=BF?= =?UTF-8?q?=E5=85=8Dpull=20request=E4=B8=8D=E9=80=9A=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index a17c6090c..2d210c794 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,6 @@ kotlin demo :[BRVAH_kotlin](https://github.com/AllenCoder/BRVAH_kotlin) # Document - [English](https://github.com/CymChad/BaseRecyclerViewAdapterHelper/wiki) - [中文](http://www.jianshu.com/p/b343fcff51b0) -- [多布局改进(MultipleItemRvAdapter的使用)](https://www.jianshu.com/p/a6cd8859c9fa) ## [UI](https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/694) ## Demo From d7e51f3abc2ddb19517a90651c3af7e4a85d7635 Mon Sep 17 00:00:00 2001 From: chaychan <844738237@qq.com> Date: Mon, 9 Apr 2018 14:54:47 +0800 Subject: [PATCH 018/653] =?UTF-8?q?=E6=9B=B4=E6=96=B0ReadMe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2d210c794..45f38c9ac 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,8 @@ Please feel free to use this. (Welcome to **Star** and **Fork**) kotlin demo :[BRVAH_kotlin](https://github.com/AllenCoder/BRVAH_kotlin) # Document - [English](https://github.com/CymChad/BaseRecyclerViewAdapterHelper/wiki) -- [中文](http://www.jianshu.com/p/b343fcff51b0) +- [中文](http://www.jianshu.com/p/b343fcff51b0) +- [MultipleItemRvAdapter(多布局改进)](https://www.jianshu.com/p/a6cd8859c9fa) ## [UI](https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/694) ## Demo From 9aa3d2b55d01e0a9bf81f3c8ce9086f5879050ad Mon Sep 17 00:00:00 2001 From: "AllenCoder@126.com" Date: Mon, 9 Apr 2018 23:09:40 +0800 Subject: [PATCH 019/653] 1 .merge upstream 2. upgrade gradle version 3. upgrdle plugin 4. add closeLoadAnimation --- .../com/chad/library/adapter/base/BaseQuickAdapter.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java b/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java index 5cd47b371..24d2c767a 100755 --- a/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java +++ b/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java @@ -1565,6 +1565,12 @@ public void openLoadAnimation(BaseAnimation animation) { public void openLoadAnimation() { this.mOpenAnimationEnable = true; } + /** + * To close the animation when loading + */ + public void closeLoadAnimation() { + this.mOpenAnimationEnable = false; + } /** * {@link #addAnimation(RecyclerView.ViewHolder)} From 8853f3e8f4abbfde9f1dd90f001521e96b04f150 Mon Sep 17 00:00:00 2001 From: Allen Date: Wed, 11 Apr 2018 16:10:27 +0800 Subject: [PATCH 020/653] 1.refactor multipleItemRvAdapter 2. remove multipleItemRvAdapter clickListener --- .../MultipleItemRvAdapterUseActivity.java | 24 +++++++++++--- .../adapter/DemoMultipleItemRvAdapter.java | 10 +++--- .../adapter/provider/ImgItemProvider.java | 28 +++++++--------- .../adapter/provider/TextImgItemProvider.java | 33 ++++++++----------- .../adapter/provider/TextItemProvider.java | 22 ++++++------- 5 files changed, 61 insertions(+), 56 deletions(-) diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemRvAdapterUseActivity.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemRvAdapterUseActivity.java index 81c324ea7..816b8cc57 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemRvAdapterUseActivity.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemRvAdapterUseActivity.java @@ -3,6 +3,9 @@ import android.os.Bundle; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; +import android.util.Log; +import android.view.View; +import android.widget.Toast; import com.chad.baserecyclerviewadapterhelper.adapter.DemoMultipleItemRvAdapter; import com.chad.baserecyclerviewadapterhelper.base.BaseActivity; @@ -44,16 +47,29 @@ protected void onCreate(Bundle savedInstanceState) { @Override public int getSpanSize(GridLayoutManager gridLayoutManager, int position) { int type = mData.get(position).type; - if (type == NormalMultipleEntity.SINGLE_TEXT){ + if (type == NormalMultipleEntity.SINGLE_TEXT) { return MultipleItem.TEXT_SPAN_SIZE; - }else if (type == NormalMultipleEntity.SINGLE_IMG){ + } else if (type == NormalMultipleEntity.SINGLE_IMG) { return MultipleItem.IMG_SPAN_SIZE; - }else{ + } else { return MultipleItem.IMG_TEXT_SPAN_SIZE; } } }); - + multipleItemAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { + @Override + public void onItemClick(BaseQuickAdapter adapter, View view, int position) { + Log.d(TAG, "onItemClick: "); + Toast.makeText(MultipleItemRvAdapterUseActivity.this, "onItemClick" + position, Toast.LENGTH_SHORT).show(); + } + }); + multipleItemAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { + @Override + public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { + Log.d(TAG, "onItemClick: "); + Toast.makeText(MultipleItemRvAdapterUseActivity.this, "onItemChildClick" + view.getId(), Toast.LENGTH_SHORT).show(); + } + }); mRecyclerView.setAdapter(multipleItemAdapter); } } diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/DemoMultipleItemRvAdapter.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/DemoMultipleItemRvAdapter.java index 966aac94f..40b0e1bdd 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/DemoMultipleItemRvAdapter.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/DemoMultipleItemRvAdapter.java @@ -12,13 +12,13 @@ import java.util.List; /** - * https://github.com/chaychan * @author ChayChan + * modify by AllenCoder 2018/04/11 * @description: MultipleItemRvAdapter demo * @date 2018/3/30 11:28 */ -public class DemoMultipleItemRvAdapter extends MultipleItemRvAdapter { +public class DemoMultipleItemRvAdapter extends MultipleItemRvAdapter { public static final int TYPE_TEXT = 100; public static final int TYPE_IMG = 200; @@ -45,11 +45,11 @@ protected int getViewType(NormalMultipleEntity entity) { //根据实体类判断并返回对应的viewType,具体判断逻辑因业务不同,这里这是简单通过判断type属性 //According to the entity class to determine and return the corresponding viewType, //the specific judgment logic is different because of the business, here is simply by judging the type attribute - if (entity.type == NormalMultipleEntity.SINGLE_TEXT){ + if (entity.type == NormalMultipleEntity.SINGLE_TEXT) { return TYPE_TEXT; - }else if (entity.type == NormalMultipleEntity.SINGLE_IMG){ + } else if (entity.type == NormalMultipleEntity.SINGLE_IMG) { return TYPE_IMG; - }else if (entity.type == NormalMultipleEntity.TEXT_IMG){ + } else if (entity.type == NormalMultipleEntity.TEXT_IMG) { return TYPE_TEXT_IMG; } return 0; diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java index 09166ffe8..e56ded91a 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java @@ -17,29 +17,25 @@ * @date 2018/3/30 11:39 */ -@ItemProviderTag( - viewType = DemoMultipleItemRvAdapter.TYPE_IMG, - layout = R.layout.item_image_view -) -public class ImgItemProvider extends BaseItemProvider { +public class ImgItemProvider extends BaseItemProvider { @Override - public void convert(BaseViewHolder helper, NormalMultipleEntity data, int position) { - if (position % 2 == 0) { - helper.setImageResource(R.id.iv, R.mipmap.animation_img1); - }else{ - helper.setImageResource(R.id.iv, R.mipmap.animation_img2); - } + public int viewType() { + return DemoMultipleItemRvAdapter.TYPE_IMG; } @Override - public void onClick(BaseViewHolder helper, NormalMultipleEntity data, int position) { - Toast.makeText(mContext, "click", Toast.LENGTH_SHORT).show(); + public int layout() { + return R.layout.item_image_view; } @Override - public boolean onLongClick(BaseViewHolder helper, NormalMultipleEntity data, int position) { - Toast.makeText(mContext, "longClick", Toast.LENGTH_SHORT).show(); - return true; + public void convert(BaseViewHolder helper, NormalMultipleEntity data, int position) { + if (position % 2 == 0) { + helper.setImageResource(R.id.iv, R.mipmap.animation_img1); + } else { + helper.setImageResource(R.id.iv, R.mipmap.animation_img2); + } + helper.addOnClickListener(R.id.iv); } } diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextImgItemProvider.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextImgItemProvider.java index b27e673b1..1f70bed52 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextImgItemProvider.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextImgItemProvider.java @@ -1,45 +1,40 @@ package com.chad.baserecyclerviewadapterhelper.adapter.provider; -import android.widget.Toast; - import com.chad.baserecyclerviewadapterhelper.R; import com.chad.baserecyclerviewadapterhelper.adapter.DemoMultipleItemRvAdapter; import com.chad.baserecyclerviewadapterhelper.entity.NormalMultipleEntity; import com.chad.library.adapter.base.BaseViewHolder; -import com.chad.library.adapter.base.annotation.ItemProviderTag; import com.chad.library.adapter.base.provider.BaseItemProvider; /** * https://github.com/chaychan + * * @author ChayChan * @description: Text Img ItemProvider * @date 2018/3/30 11:39 */ -@ItemProviderTag( - viewType = DemoMultipleItemRvAdapter.TYPE_TEXT_IMG, - layout = R.layout.item_img_text_view -) -public class TextImgItemProvider extends BaseItemProvider { +public class TextImgItemProvider extends BaseItemProvider { + + @Override + public int viewType() { + return DemoMultipleItemRvAdapter.TYPE_TEXT_IMG; + } + + @Override + public int layout() { + return R.layout.item_img_text_view; + } @Override public void convert(BaseViewHolder helper, NormalMultipleEntity data, int position) { helper.setText(R.id.tv, data.content); if (position % 2 == 0) { helper.setImageResource(R.id.iv, R.mipmap.animation_img1); - }else{ + } else { helper.setImageResource(R.id.iv, R.mipmap.animation_img2); } + helper.addOnClickListener(R.id.tv); } - @Override - public void onClick(BaseViewHolder helper, NormalMultipleEntity data, int position) { - Toast.makeText(mContext, "click", Toast.LENGTH_SHORT).show(); - } - - @Override - public boolean onLongClick(BaseViewHolder helper, NormalMultipleEntity data, int position) { - Toast.makeText(mContext, "longClick", Toast.LENGTH_SHORT).show(); - return true; - } } diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java index 8ac0a8810..d1e91ee97 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java @@ -11,30 +11,28 @@ /** * https://github.com/chaychan + * * @author ChayChan * @description: Text ItemProvider * @date 2018/3/30 11:39 */ -@ItemProviderTag( - viewType = DemoMultipleItemRvAdapter.TYPE_TEXT, - layout = R.layout.item_text_view -) -public class TextItemProvider extends BaseItemProvider { +public class TextItemProvider extends BaseItemProvider { @Override - public void convert(BaseViewHolder helper, NormalMultipleEntity data, int position) { - helper.setText(R.id.tv, data.content); + public int viewType() { + return DemoMultipleItemRvAdapter.TYPE_TEXT; } @Override - public void onClick(BaseViewHolder helper, NormalMultipleEntity data, int position) { - Toast.makeText(mContext, "click", Toast.LENGTH_SHORT).show(); + public int layout() { + return R.layout.item_text_view; } @Override - public boolean onLongClick(BaseViewHolder helper, NormalMultipleEntity data, int position) { - Toast.makeText(mContext, "longClick", Toast.LENGTH_SHORT).show(); - return true; + public void convert(BaseViewHolder helper, NormalMultipleEntity data, int position) { + helper.setText(R.id.tv, data.content); + helper.addOnClickListener(R.id.tv); } + } From 9b086ba9ed2552eba03e7819f87cda4f91a971e5 Mon Sep 17 00:00:00 2001 From: Allen Date: Wed, 11 Apr 2018 16:11:37 +0800 Subject: [PATCH 021/653] 1.Deprecated interface ItemProvideTag 2. Replace reflections with native methods --- .../adapter/base/MultipleItemRvAdapter.java | 33 +++---------------- .../base/annotation/ItemProviderTag.java | 3 ++ .../base/provider/BaseItemProvider.java | 18 +++++++--- .../adapter/base/util/ProviderDelegate.java | 5 ++- 4 files changed, 23 insertions(+), 36 deletions(-) diff --git a/library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java b/library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java index bb8353835..856f0960f 100644 --- a/library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java +++ b/library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java @@ -13,14 +13,14 @@ /** * https://github.com/chaychan + * * @author ChayChan - * @description: - * When there are multiple entries, avoid too much business logic in convert(),Put the logic of each item in the corresponding ItemProvider + * @description: When there are multiple entries, avoid too much business logic in convert(),Put the logic of each item in the corresponding ItemProvider * 当有多种条目的时候,避免在convert()中做太多的业务逻辑,把逻辑放在对应的ItemProvider中 * @date 2018/3/21 9:55 */ -public abstract class MultipleItemRvAdapter extends BaseQuickAdapter { +public abstract class MultipleItemRvAdapter extends BaseQuickAdapter { private SparseArray mItemProviders; protected ProviderDelegate mProviderDelegate; @@ -49,12 +49,9 @@ protected int getItemType(T t) { mItemProviders = mProviderDelegate.getItemProviders(); for (int i = 0; i < mItemProviders.size(); i++) { int key = mItemProviders.keyAt(i); - BaseItemProvider provider = mItemProviders.get(key); provider.mData = mData; - - ItemProviderTag tag = provider.getClass().getAnnotation(ItemProviderTag.class); - getMultiTypeDelegate().registerItemType(key, tag.layout()); + getMultiTypeDelegate().registerItemType(key, provider.layout()); } } @@ -66,30 +63,8 @@ protected int getItemType(T t) { protected void convert(V helper, T item) { int itemViewType = helper.getItemViewType(); BaseItemProvider provider = mItemProviders.get(itemViewType); - provider.mContext = helper.itemView.getContext(); - int position = helper.getLayoutPosition() - getHeaderLayoutCount(); provider.convert(helper, item, position); - - bindClick(helper, item, position, provider); - } - - private void bindClick(final V helper, final T item, final int position, final BaseItemProvider provider) { - View itemView = helper.itemView; - - itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - provider.onClick(helper, item, position); - } - }); - - itemView.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - return provider.onLongClick(helper, item, position); - } - }); } } diff --git a/library/src/main/java/com/chad/library/adapter/base/annotation/ItemProviderTag.java b/library/src/main/java/com/chad/library/adapter/base/annotation/ItemProviderTag.java index ad62625c4..4ffe2356c 100644 --- a/library/src/main/java/com/chad/library/adapter/base/annotation/ItemProviderTag.java +++ b/library/src/main/java/com/chad/library/adapter/base/annotation/ItemProviderTag.java @@ -7,6 +7,7 @@ /** * https://github.com/chaychan + * * @author ChayChan * @description: ItemProvider's annotation * @date 2018/3/21 10:48 @@ -14,7 +15,9 @@ @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) +@Deprecated public @interface ItemProviderTag { int viewType(); + int layout(); } diff --git a/library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java b/library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java index c045eb1eb..a267b331d 100644 --- a/library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java +++ b/library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java @@ -8,19 +8,29 @@ /** * https://github.com/chaychan + * * @author ChayChan * @description: The base class of ItemProvider * @date 2018/3/21 10:41 */ -public abstract class BaseItemProvider { +public abstract class BaseItemProvider { public Context mContext; public List mData; - public abstract void convert(V helper, T data, int position); + /** + * + * @return + */ + public abstract int viewType(); + + /** + * + * @return + */ + public abstract int layout(); - public abstract void onClick(V helper, T data, int position); + public abstract void convert(V helper, T data, int position); - public abstract boolean onLongClick(V helper, T data, int position); } diff --git a/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java b/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java index b694f6bbe..2ce704d08 100644 --- a/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java +++ b/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java @@ -16,12 +16,11 @@ public class ProviderDelegate { private SparseArray mItemProviders = new SparseArray<>(); public void registerProvider(BaseItemProvider provider){ - ItemProviderTag tag = provider.getClass().getAnnotation(ItemProviderTag.class); - if (tag == null){ + if (provider == null){ throw new ItemProviderAnnotationException("ItemProviderTag not def layout"); } - int viewType = tag.viewType(); + int viewType = provider.viewType(); if (mItemProviders.get(viewType) == null){ mItemProviders.put(viewType,provider); } From c40b8c9c6823c2256cf2d548eca23bee969242f6 Mon Sep 17 00:00:00 2001 From: chaychan <844738237@qq.com> Date: Wed, 11 Apr 2018 17:36:08 +0800 Subject: [PATCH 022/653] =?UTF-8?q?BaseItemProvider=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=B3=A8=E8=A7=A3=E6=88=96=E9=87=8D=E5=86=99?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E8=BF=94=E5=9B=9EviewType=E5=92=8Clayout?= =?UTF-8?q?=E7=9A=84id;=E4=BF=AE=E5=A4=8DitemProvider=E8=A6=86=E7=9B=96onI?= =?UTF-8?q?temClickListener=E5=9B=9E=E8=B0=83=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E5=A6=82=E6=9C=89=E8=AE=BE=E7=BD=AEonItemClickListene?= =?UTF-8?q?r=E5=88=99=E4=B8=8D=E5=9B=9E=E8=B0=83=E5=88=B0itemProvider?= =?UTF-8?q?=E7=9A=84onClick=E6=96=B9=E6=B3=95=E4=B8=AD=EF=BC=8C=E9=95=BF?= =?UTF-8?q?=E6=8C=89=E4=BA=8B=E4=BB=B6=E5=A6=82=E5=90=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/provider/TextItemProvider.java | 17 +++++++ .../adapter/base/MultipleItemRvAdapter.java | 48 ++++++++++++++----- .../base/provider/BaseItemProvider.java | 22 +++++++-- .../util/ItemProviderAnnotationException.java | 17 ------- .../adapter/base/util/ProviderDelegate.java | 6 ++- 5 files changed, 75 insertions(+), 35 deletions(-) delete mode 100644 library/src/main/java/com/chad/library/adapter/base/util/ItemProviderAnnotationException.java diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java index 8ac0a8810..f6ec63841 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java @@ -22,6 +22,23 @@ ) public class TextItemProvider extends BaseItemProvider { + /* + 使用注解返回对应的viewType和layout,或者重写getViewType()和getLayout() + Use annotations to return the corresponding viewType and layout, or override getViewType() and getLayout() + + @Override + public int getViewType() { + return DemoMultipleItemRvAdapter.TYPE_TEXT; + } + */ + + /* + @Override + public int getLayout() { + return R.layout.item_text_view; + } + */ + @Override public void convert(BaseViewHolder helper, NormalMultipleEntity data, int position) { helper.setText(R.id.tv, data.content); diff --git a/library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java b/library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java index bb8353835..1ac762c10 100644 --- a/library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java +++ b/library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java @@ -54,7 +54,12 @@ protected int getItemType(T t) { provider.mData = mData; ItemProviderTag tag = provider.getClass().getAnnotation(ItemProviderTag.class); - getMultiTypeDelegate().registerItemType(key, tag.layout()); + if (tag == null){ + getMultiTypeDelegate().registerItemType(key, provider.getLayout()); + }else{ + getMultiTypeDelegate().registerItemType(key, tag.layout()); + } + } } @@ -76,20 +81,37 @@ protected void convert(V helper, T item) { } private void bindClick(final V helper, final T item, final int position, final BaseItemProvider provider) { + OnItemClickListener clickListener = getOnItemClickListener(); + OnItemLongClickListener longClickListener = getOnItemLongClickListener(); + + if (clickListener != null && longClickListener != null){ + //如果已经设置了子条目点击监听和子条目长按监听 + // If you have set up a sub-entry click monitor and sub-entries long press listen + return; + } + View itemView = helper.itemView; - itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - provider.onClick(helper, item, position); - } - }); + if (clickListener == null){ + //如果没有设置点击监听,则回调给itemProvider + //Callback to itemProvider if no click listener is set + itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + provider.onClick(helper, item, position); + } + }); + } - itemView.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - return provider.onLongClick(helper, item, position); - } - }); + if (longClickListener == null){ + //如果没有设置长按监听,则回调给itemProvider + // If you do not set a long press listener, callback to the itemProvider + itemView.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + return provider.onLongClick(helper, item, position); + } + }); + } } } diff --git a/library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java b/library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java index c045eb1eb..efe4e680d 100644 --- a/library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java +++ b/library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java @@ -20,7 +20,23 @@ public abstract class BaseItemProvider { public abstract void convert(V helper, T data, int position); - public abstract void onClick(V helper, T data, int position); - - public abstract boolean onLongClick(V helper, T data, int position); + //子类若想实现条目点击事件则重写该方法 + //Subclasses override this method if you want to implement an item click event + public void onClick(V helper, T data, int position){}; + + //子类若想实现条目长按事件则重写该方法 + //Subclasses override this method if you want to implement an item long press event + public boolean onLongClick(V helper, T data, int position){return false;}; + + //如果没有使用注解返回layout则重写该方法 + //Rewrite this method if you did not use annotations to return layout + public int getLayout(){ + return 0; + } + + //如果没有使用注解返回viewType则重写该方法 + //Rewrite this method if you did not use annotations to return viewType + public int getViewType(){ + return 0; + } } diff --git a/library/src/main/java/com/chad/library/adapter/base/util/ItemProviderAnnotationException.java b/library/src/main/java/com/chad/library/adapter/base/util/ItemProviderAnnotationException.java deleted file mode 100644 index 0142e2d6d..000000000 --- a/library/src/main/java/com/chad/library/adapter/base/util/ItemProviderAnnotationException.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.chad.library.adapter.base.util; - -/** - * https://github.com/chaychan - * - * @author ChayChan - * @description: AnnotationException - * @date 2018/3/30 17:07 - */ - -public class ItemProviderAnnotationException extends RuntimeException { - - public ItemProviderAnnotationException(String message) { - super(message); - } - -} diff --git a/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java b/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java index b694f6bbe..5dd94d853 100644 --- a/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java +++ b/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java @@ -17,11 +17,13 @@ public class ProviderDelegate { public void registerProvider(BaseItemProvider provider){ ItemProviderTag tag = provider.getClass().getAnnotation(ItemProviderTag.class); + int viewType; if (tag == null){ - throw new ItemProviderAnnotationException("ItemProviderTag not def layout"); + viewType = provider.getViewType(); + }else{ + viewType = tag.viewType(); } - int viewType = tag.viewType(); if (mItemProviders.get(viewType) == null){ mItemProviders.put(viewType,provider); } From 66ca0bd76b746cfe545e89434a1a0ad9992cfb3f Mon Sep 17 00:00:00 2001 From: chaychan <844738237@qq.com> Date: Thu, 12 Apr 2018 09:24:17 +0800 Subject: [PATCH 023/653] 1.Deprecated interface ItemProvideTag; 2.Replace reflections with native method; 3.Improve item click event handling --- .../adapter/provider/ImgItemProvider.java | 15 +++++--- .../adapter/provider/TextImgItemProvider.java | 16 +++++---- .../adapter/provider/TextItemProvider.java | 35 +++++++------------ .../adapter/base/MultipleItemRvAdapter.java | 12 ++----- .../base/annotation/ItemProviderTag.java | 1 + .../base/provider/BaseItemProvider.java | 20 +++++------ .../base/util/ItemProviderException.java | 15 ++++++++ .../adapter/base/util/ProviderDelegate.java | 11 +++--- 8 files changed, 62 insertions(+), 63 deletions(-) create mode 100644 library/src/main/java/com/chad/library/adapter/base/util/ItemProviderException.java diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java index 09166ffe8..6a719ea8c 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java @@ -6,7 +6,6 @@ import com.chad.baserecyclerviewadapterhelper.adapter.DemoMultipleItemRvAdapter; import com.chad.baserecyclerviewadapterhelper.entity.NormalMultipleEntity; import com.chad.library.adapter.base.BaseViewHolder; -import com.chad.library.adapter.base.annotation.ItemProviderTag; import com.chad.library.adapter.base.provider.BaseItemProvider; /** @@ -17,12 +16,18 @@ * @date 2018/3/30 11:39 */ -@ItemProviderTag( - viewType = DemoMultipleItemRvAdapter.TYPE_IMG, - layout = R.layout.item_image_view -) public class ImgItemProvider extends BaseItemProvider { + @Override + public int viewType() { + return DemoMultipleItemRvAdapter.TYPE_IMG; + } + + @Override + public int layout() { + return R.layout.item_image_view; + } + @Override public void convert(BaseViewHolder helper, NormalMultipleEntity data, int position) { if (position % 2 == 0) { diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextImgItemProvider.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextImgItemProvider.java index b27e673b1..d5d87227e 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextImgItemProvider.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextImgItemProvider.java @@ -6,7 +6,6 @@ import com.chad.baserecyclerviewadapterhelper.adapter.DemoMultipleItemRvAdapter; import com.chad.baserecyclerviewadapterhelper.entity.NormalMultipleEntity; import com.chad.library.adapter.base.BaseViewHolder; -import com.chad.library.adapter.base.annotation.ItemProviderTag; import com.chad.library.adapter.base.provider.BaseItemProvider; /** @@ -15,13 +14,18 @@ * @description: Text Img ItemProvider * @date 2018/3/30 11:39 */ - -@ItemProviderTag( - viewType = DemoMultipleItemRvAdapter.TYPE_TEXT_IMG, - layout = R.layout.item_img_text_view -) public class TextImgItemProvider extends BaseItemProvider { + @Override + public int viewType() { + return DemoMultipleItemRvAdapter.TYPE_TEXT_IMG; + } + + @Override + public int layout() { + return R.layout.item_img_text_view; + } + @Override public void convert(BaseViewHolder helper, NormalMultipleEntity data, int position) { helper.setText(R.id.tv, data.content); diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java index f6ec63841..86b1c7061 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java @@ -6,38 +6,27 @@ import com.chad.baserecyclerviewadapterhelper.adapter.DemoMultipleItemRvAdapter; import com.chad.baserecyclerviewadapterhelper.entity.NormalMultipleEntity; import com.chad.library.adapter.base.BaseViewHolder; -import com.chad.library.adapter.base.annotation.ItemProviderTag; import com.chad.library.adapter.base.provider.BaseItemProvider; /** * https://github.com/chaychan + * * @author ChayChan * @description: Text ItemProvider * @date 2018/3/30 11:39 */ -@ItemProviderTag( - viewType = DemoMultipleItemRvAdapter.TYPE_TEXT, - layout = R.layout.item_text_view -) -public class TextItemProvider extends BaseItemProvider { - - /* - 使用注解返回对应的viewType和layout,或者重写getViewType()和getLayout() - Use annotations to return the corresponding viewType and layout, or override getViewType() and getLayout() - - @Override - public int getViewType() { - return DemoMultipleItemRvAdapter.TYPE_TEXT; - } - */ - - /* - @Override - public int getLayout() { - return R.layout.item_text_view; - } - */ +public class TextItemProvider extends BaseItemProvider { + + @Override + public int viewType() { + return DemoMultipleItemRvAdapter.TYPE_TEXT; + } + + @Override + public int layout() { + return R.layout.item_text_view; + } @Override public void convert(BaseViewHolder helper, NormalMultipleEntity data, int position) { diff --git a/library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java b/library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java index 1ac762c10..5fc69f54c 100644 --- a/library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java +++ b/library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java @@ -4,7 +4,6 @@ import android.util.SparseArray; import android.view.View; -import com.chad.library.adapter.base.annotation.ItemProviderTag; import com.chad.library.adapter.base.provider.BaseItemProvider; import com.chad.library.adapter.base.util.MultiTypeDelegate; import com.chad.library.adapter.base.util.ProviderDelegate; @@ -47,19 +46,12 @@ protected int getItemType(T t) { registerItemProvider(); mItemProviders = mProviderDelegate.getItemProviders(); + for (int i = 0; i < mItemProviders.size(); i++) { int key = mItemProviders.keyAt(i); - BaseItemProvider provider = mItemProviders.get(key); provider.mData = mData; - - ItemProviderTag tag = provider.getClass().getAnnotation(ItemProviderTag.class); - if (tag == null){ - getMultiTypeDelegate().registerItemType(key, provider.getLayout()); - }else{ - getMultiTypeDelegate().registerItemType(key, tag.layout()); - } - + getMultiTypeDelegate().registerItemType(key, provider.layout()); } } diff --git a/library/src/main/java/com/chad/library/adapter/base/annotation/ItemProviderTag.java b/library/src/main/java/com/chad/library/adapter/base/annotation/ItemProviderTag.java index ad62625c4..ef96556e6 100644 --- a/library/src/main/java/com/chad/library/adapter/base/annotation/ItemProviderTag.java +++ b/library/src/main/java/com/chad/library/adapter/base/annotation/ItemProviderTag.java @@ -14,6 +14,7 @@ @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) +@Deprecated public @interface ItemProviderTag { int viewType(); int layout(); diff --git a/library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java b/library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java index efe4e680d..50dbd985f 100644 --- a/library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java +++ b/library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java @@ -18,6 +18,14 @@ public abstract class BaseItemProvider { public Context mContext; public List mData; + //子类须重写该方法返回viewType + //Rewrite this method to return viewType + public abstract int viewType(); + + //子类须重写该方法返回layout + //Rewrite this method to return layout + public abstract int layout(); + public abstract void convert(V helper, T data, int position); //子类若想实现条目点击事件则重写该方法 @@ -27,16 +35,4 @@ public abstract class BaseItemProvider { //子类若想实现条目长按事件则重写该方法 //Subclasses override this method if you want to implement an item long press event public boolean onLongClick(V helper, T data, int position){return false;}; - - //如果没有使用注解返回layout则重写该方法 - //Rewrite this method if you did not use annotations to return layout - public int getLayout(){ - return 0; - } - - //如果没有使用注解返回viewType则重写该方法 - //Rewrite this method if you did not use annotations to return viewType - public int getViewType(){ - return 0; - } } diff --git a/library/src/main/java/com/chad/library/adapter/base/util/ItemProviderException.java b/library/src/main/java/com/chad/library/adapter/base/util/ItemProviderException.java new file mode 100644 index 000000000..e1335d67e --- /dev/null +++ b/library/src/main/java/com/chad/library/adapter/base/util/ItemProviderException.java @@ -0,0 +1,15 @@ +package com.chad.library.adapter.base.util; + +/** + * @author ChayChan + * @description: ItemProviderException + * @date 2018/4/12 9:10 + */ + +public class ItemProviderException extends NullPointerException { + + public ItemProviderException(String message) { + super(message); + } + +} diff --git a/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java b/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java index 5dd94d853..f920f2321 100644 --- a/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java +++ b/library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java @@ -2,7 +2,6 @@ import android.util.SparseArray; -import com.chad.library.adapter.base.annotation.ItemProviderTag; import com.chad.library.adapter.base.provider.BaseItemProvider; /** @@ -16,14 +15,12 @@ public class ProviderDelegate { private SparseArray mItemProviders = new SparseArray<>(); public void registerProvider(BaseItemProvider provider){ - ItemProviderTag tag = provider.getClass().getAnnotation(ItemProviderTag.class); - int viewType; - if (tag == null){ - viewType = provider.getViewType(); - }else{ - viewType = tag.viewType(); + if (provider == null){ + throw new ItemProviderException("ItemProvider can not be null"); } + int viewType = provider.viewType(); + if (mItemProviders.get(viewType) == null){ mItemProviders.put(viewType,provider); } From 77f0dab5a89d050a6a1e6347ae9b2af659c32838 Mon Sep 17 00:00:00 2001 From: Allen Date: Thu, 12 Apr 2018 10:19:08 +0800 Subject: [PATCH 024/653] Merge branch 'master' of https://github.com/CymChad/BaseRecyclerViewAdapterHelper # Conflicts: # app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java # app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextImgItemProvider.java # app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java # library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java # library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java # library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java --- .../MultipleItemRvAdapterUseActivity.java | 48 ++++++++++++++----- 1 file changed, 35 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemRvAdapterUseActivity.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemRvAdapterUseActivity.java index 816b8cc57..099522b98 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemRvAdapterUseActivity.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemRvAdapterUseActivity.java @@ -17,7 +17,6 @@ import java.util.List; /** - * https://github.com/chaychan * * @author ChayChan * @description: MultipleItemRvAdapter's usage @@ -56,20 +55,43 @@ public int getSpanSize(GridLayoutManager gridLayoutManager, int position) { } } }); - multipleItemAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { - @Override - public void onItemClick(BaseQuickAdapter adapter, View view, int position) { - Log.d(TAG, "onItemClick: "); - Toast.makeText(MultipleItemRvAdapterUseActivity.this, "onItemClick" + position, Toast.LENGTH_SHORT).show(); - } - }); - multipleItemAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { + +/** + * The click event is distributed to the BaseItemProvider and can be overridden. + * if you need register itemchild click longClick + * you need to use https://github.com/CymChad/BaseRecyclerViewAdapterHelper/wiki/Add-OnItemClickLister#use-it-item-child-long-click + */ + /* @Override + protected void convert(BaseViewHolder helper, Status item) { + helper.setText(R.id.tweetName, item.getUserName()) + .setText(R.id.tweetText, item.getText()) + .setText(R.id.tweetDate, item.getCreatedAt()) + .setVisible(R.id.tweetRT, item.isRetweet()) + .addOnLongClickListener(R.id.tweetText) + .linkify(R.id.tweetText); + + } + adapter.setOnItemChildLongClickListener(new BaseQuickAdapter.OnItemChildLongClickListener() { @Override - public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { - Log.d(TAG, "onItemClick: "); - Toast.makeText(MultipleItemRvAdapterUseActivity.this, "onItemChildClick" + view.getId(), Toast.LENGTH_SHORT).show(); + public void onItemChildLongClick(BaseQuickAdapter adapter, View view, int position) { + Log.d(TAG, "onItemChildLongClick: "); + Toast.makeText(ItemClickActivity.this, "onItemChildLongClick" + position, Toast.LENGTH_SHORT).show(); } - }); + });*/ +// multipleItemAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { +// @Override +// public void onItemClick(BaseQuickAdapter adapter, View view, int position) { +// Log.d(TAG, "onItemClick: "); +// Toast.makeText(MultipleItemRvAdapterUseActivity.this, "onItemClick" + position, Toast.LENGTH_SHORT).show(); +// } +// }); +// multipleItemAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { +// @Override +// public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { +// Log.d(TAG, "onItemClick: "); +// Toast.makeText(MultipleItemRvAdapterUseActivity.this, "onItemChildClick" + view.getId(), Toast.LENGTH_SHORT).show(); +// } +// }); mRecyclerView.setAdapter(multipleItemAdapter); } } From 75a784cd604918636ba2138dd9aaedb07c2be5af Mon Sep 17 00:00:00 2001 From: Allen Date: Thu, 19 Apr 2018 10:19:57 +0800 Subject: [PATCH 025/653] Merge branch 'master' of https://github.com/CymChad/BaseRecyclerViewAdapterHelper # Conflicts: # app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java # app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextImgItemProvider.java # app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java # library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java # library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java # library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 0f1313b9b..2e9a2b486 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.1.0' + classpath 'com.android.tools.build:gradle:3.1.1' } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e2c612316..e6b1884fa 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip From fd5fc8114dede0a2bae2d8d8d24434278a45ce9e Mon Sep 17 00:00:00 2001 From: Allen Date: Tue, 8 May 2018 22:16:51 +0800 Subject: [PATCH 026/653] Update README --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 45f38c9ac..056b861e1 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,6 @@ kotlin demo :[BRVAH_kotlin](https://github.com/AllenCoder/BRVAH_kotlin) # Document - [English](https://github.com/CymChad/BaseRecyclerViewAdapterHelper/wiki) - [中文](http://www.jianshu.com/p/b343fcff51b0) -- [MultipleItemRvAdapter(多布局改进)](https://www.jianshu.com/p/a6cd8859c9fa) ## [UI](https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/694) ## Demo From 091790a81f098decff4ae05dd720746ce140fd4e Mon Sep 17 00:00:00 2001 From: Allen Date: Wed, 9 May 2018 10:13:06 +0800 Subject: [PATCH 027/653] Merge branch 'master' of https://github.com/CymChad/BaseRecyclerViewAdapterHelper # Conflicts: # app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java # app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextImgItemProvider.java # app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java # library/src/main/java/com/chad/library/adapter/base/MultipleItemRvAdapter.java # library/src/main/java/com/chad/library/adapter/base/provider/BaseItemProvider.java # library/src/main/java/com/chad/library/adapter/base/util/ProviderDelegate.java --- app/build.gradle | 10 +++++----- build.gradle | 2 +- library/build.gradle | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 9742eebdd..1b12b7606 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,12 +1,12 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 26 + compileSdkVersion 27 defaultConfig { applicationId "com.chad.baserecyclerviewadapterhelper" minSdkVersion 14 - targetSdkVersion 26 + targetSdkVersion 27 versionCode 5 versionName "2.1" } @@ -28,9 +28,9 @@ dependencies { implementation project(path: ':library') implementation project(':material-spinner-1.0.5') implementation 'com.github.bumptech.glide:glide:3.7.0' - implementation 'com.android.support:design:26.1.0' - implementation 'com.android.support:cardview-v7:26.1.0' - implementation 'com.android.support:appcompat-v7:26.1.0' + implementation 'com.android.support:design:27.1.1' + implementation 'com.android.support:cardview-v7:27.1.1' + implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.kyleduo.switchbutton:library:2.0.0' implementation 'com.orhanobut:logger:2.1.1' } diff --git a/build.gradle b/build.gradle index 2e9a2b486..103aacfc4 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.1.1' + classpath 'com.android.tools.build:gradle:3.1.2' } } diff --git a/library/build.gradle b/library/build.gradle index c958b2ee8..159a7683e 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -1,10 +1,10 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 26 + compileSdkVersion 27 defaultConfig { minSdkVersion 11 - targetSdkVersion 26 + targetSdkVersion 27 versionCode 1 versionName "1.0" } @@ -48,5 +48,5 @@ artifacts { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - compileOnly 'com.android.support:recyclerview-v7:26.1.0' + compileOnly 'com.android.support:recyclerview-v7:27.1.1' } From 25dafd5a4982a9247d6390a4eb09528155f7b788 Mon Sep 17 00:00:00 2001 From: Allen Date: Wed, 9 May 2018 10:52:02 +0800 Subject: [PATCH 028/653] update travis config --- .travis.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index c8908aab0..43b169c9f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,8 +5,8 @@ sudo: false android: components: - tools - - build-tools-26.0.2 - - android-26 + - build-tools-27.0.2 + - android-27 - extra-android-m2repository - extra-android-support licenses: @@ -16,8 +16,8 @@ android: before_install: - chmod +x gradlew - mkdir "$ANDROID_HOME/licenses" || true - - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license" - - echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license" + # Hack to accept Android licenses + - yes | sdkmanager "platforms;android-27" script: - ./gradlew assembleRelease From 4693c0ced2ba401fc86b908d764bfa206b4c2c0e Mon Sep 17 00:00:00 2001 From: Allen Date: Wed, 9 May 2018 11:09:35 +0800 Subject: [PATCH 029/653] update travis config --- .travis.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 43b169c9f..abf269e44 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,16 +3,13 @@ jdk: oraclejdk8 sudo: false android: - components: +components: - tools + - platform-tools - build-tools-27.0.2 - android-27 - extra-android-m2repository - extra-android-support - licenses: - - android-sdk-license-.+ - - '.+' - before_install: - chmod +x gradlew - mkdir "$ANDROID_HOME/licenses" || true From 330346fdfb9eee3284adf107c0ef205bd7a0035b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E8=B1=AA?= Date: Wed, 11 Jul 2018 22:18:13 +0800 Subject: [PATCH 030/653] =?UTF-8?q?=E6=BB=91=E5=8A=A8=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=9A=84=E7=9B=91=E5=90=AC=E7=9A=84=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 当onItemSwiped方法回调前,数据源没有删掉该item,导致在回调方法中,得到的为移除前的数据。 --- .../library/adapter/base/BaseItemDraggableAdapter.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/library/src/main/java/com/chad/library/adapter/base/BaseItemDraggableAdapter.java b/library/src/main/java/com/chad/library/adapter/base/BaseItemDraggableAdapter.java index 60cda21f6..ea97c7bc8 100644 --- a/library/src/main/java/com/chad/library/adapter/base/BaseItemDraggableAdapter.java +++ b/library/src/main/java/com/chad/library/adapter/base/BaseItemDraggableAdapter.java @@ -239,16 +239,14 @@ public void onItemSwipeClear(RecyclerView.ViewHolder viewHolder) { } public void onItemSwiped(RecyclerView.ViewHolder viewHolder) { - if (mOnItemSwipeListener != null && itemSwipeEnabled) { - mOnItemSwipeListener.onItemSwiped(viewHolder, getViewHolderPosition(viewHolder)); - } - int pos = getViewHolderPosition(viewHolder); - if (inRange(pos)) { mData.remove(pos); notifyItemRemoved(viewHolder.getAdapterPosition()); } + if (mOnItemSwipeListener != null && itemSwipeEnabled) { + mOnItemSwipeListener.onItemSwiped(viewHolder, getViewHolderPosition(viewHolder)); + } } public void onItemSwiping(Canvas canvas, RecyclerView.ViewHolder viewHolder, float dX, float dY, boolean isCurrentlyActive) { From 836649a32a8f4f0807223e2362be77fe6201b8cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=AE=87=E6=98=8E?= Date: Sun, 5 Aug 2018 22:45:24 +0800 Subject: [PATCH 031/653] Update README.md --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 056b861e1..a3c654464 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![](https://user-images.githubusercontent.com/7698209/33198075-ef8f2230-d123-11e7-85a3-4cb9b22f877d.png) -[![](https://jitpack.io/v/CymChad/BaseRecyclerViewAdapterHelper.svg)](https://jitpack.io/#CymChad/BaseRecyclerViewAdapterHelper)![](https://travis-ci.org/CymChad/BaseRecyclerViewAdapterHelper.svg?branch=master)[![API](https://img.shields.io/badge/API-14%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=14)[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-BaseRecyclerViewAdapterHelper-green.svg?style=true)](https://android-arsenal.com/details/1/3644)[![CircleCI](https://circleci.com/gh/CymChad/BaseRecyclerViewAdapterHelper/tree/master.svg?style=svg)](https://circleci.com/gh/CymChad/BaseRecyclerViewAdapterHelper/tree/master)[![Codacy Badge](https://api.codacy.com/project/badge/Grade/2302d0084d0048eaa0f9bac4350837a0)](https://www.codacy.com/app/CymChad/BaseRecyclerViewAdapterHelper?utm_source=github.com&utm_medium=referral&utm_content=CymChad/BaseRecyclerViewAdapterHelper&utm_campaign=Badge_Grade)[![](https://img.shields.io/badge/%E4%BD%9C%E8%80%85-%E9%99%88%E5%AE%87%E6%98%8E-7AD6FD.svg)](http://www.jianshu.com/u/f958e66439f0) +[![](https://jitpack.io/v/CymChad/BaseRecyclerViewAdapterHelper.svg)](https://jitpack.io/#CymChad/BaseRecyclerViewAdapterHelper)![](https://travis-ci.org/CymChad/BaseRecyclerViewAdapterHelper.svg?branch=master)[![API](https://img.shields.io/badge/API-14%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=14)[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-BaseRecyclerViewAdapterHelper-green.svg?style=true)](https://android-arsenal.com/details/1/3644)[![CircleCI](https://circleci.com/gh/CymChad/BaseRecyclerViewAdapterHelper/tree/master.svg?style=svg)](https://circleci.com/gh/CymChad/BaseRecyclerViewAdapterHelper/tree/master)[![Codacy Badge](https://api.codacy.com/project/badge/Grade/2302d0084d0048eaa0f9bac4350837a0)](https://www.codacy.com/app/CymChad/BaseRecyclerViewAdapterHelper?utm_source=github.com&utm_medium=referral&utm_content=CymChad/BaseRecyclerViewAdapterHelper&utm_campaign=Badge_Grade)[![](https://img.shields.io/badge/%E4%BD%9C%E8%80%85-%E9%99%88%E5%AE%87%E6%98%8E-7AD6FD.svg)](https://www.zhihu.com/people/chen-yu-ming-98/activities) # BRVAH http://www.recyclerview.org/ Powerful and flexible RecyclerAdapter, @@ -53,5 +53,3 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ``` -# 推荐 -![](https://user-images.githubusercontent.com/7698209/33198309-4908849a-d125-11e7-80eb-a80c64d61c77.jpeg) From 5faf327b4601468d3f4787ad1d9e7d082be4929b Mon Sep 17 00:00:00 2001 From: Allen Date: Mon, 13 Aug 2018 14:19:44 +0800 Subject: [PATCH 032/653] update bulid.tools version --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 103aacfc4..7afb913f3 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.1.2' + classpath 'com.android.tools.build:gradle:3.1.4' } } From 4b6203685d8bf1bfc016f4c1ffbe8654eed93a83 Mon Sep 17 00:00:00 2001 From: AllenCoder Date: Sun, 26 Aug 2018 17:08:02 +0800 Subject: [PATCH 033/653] fix https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/2400 --- .../PullToRefreshUseActivity.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/PullToRefreshUseActivity.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/PullToRefreshUseActivity.java index b4397c148..e0dd04a1d 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/PullToRefreshUseActivity.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/PullToRefreshUseActivity.java @@ -183,7 +183,11 @@ private void loadMore() { new Request(mNextRequestPage, new RequestCallBack() { @Override public void success(List data) { - setData(false, data); + /** + * fix https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/2400 + */ + boolean isRefresh =mNextRequestPage ==1; + setData(isRefresh, data); } @Override From 2095b1d16637b3dc6fc7d2f50154ced0520fca9c Mon Sep 17 00:00:00 2001 From: NFLeo <973555610@qq.com> Date: Mon, 27 Aug 2018 15:32:43 +0800 Subject: [PATCH 034/653] =?UTF-8?q?=E6=B7=BB=E5=8A=A0section=20multiple?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=8F=8Ademo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 1 + .../HomeActivity.java | 6 +- .../SectionMultipleItemUseActivity.java | 42 ++++++ .../adapter/SectionMultipleItemAdapter.java | 54 +++++++ .../data/DataServer.java | 27 ++++ .../entity/SectionMultipleItem.java | 52 +++++++ .../BaseSectionMultiItemQuickAdapter.java | 140 ++++++++++++++++++ .../base/entity/SectionMultiEntity.java | 25 ++++ 8 files changed, 344 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/com/chad/baserecyclerviewadapterhelper/SectionMultipleItemUseActivity.java create mode 100644 app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/SectionMultipleItemAdapter.java create mode 100644 app/src/main/java/com/chad/baserecyclerviewadapterhelper/entity/SectionMultipleItem.java create mode 100644 library/src/main/java/com/chad/library/adapter/base/BaseSectionMultiItemQuickAdapter.java create mode 100644 library/src/main/java/com/chad/library/adapter/base/entity/SectionMultiEntity.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 64c72b114..9a9b1a294 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -35,6 +35,7 @@ android:name=".HomeActivity" android:launchMode="singleTask"> + \ No newline at end of file diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/HomeActivity.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/HomeActivity.java index 2325e5337..5e8f58d0a 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/HomeActivity.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/HomeActivity.java @@ -18,9 +18,9 @@ * https://github.com/CymChad/BaseRecyclerViewAdapterHelper */ public class HomeActivity extends AppCompatActivity { - private static final Class[] ACTIVITY = {AnimationUseActivity.class, ChooseMultipleItemUseTypeActivity.class, HeaderAndFooterUseActivity.class, PullToRefreshUseActivity.class, SectionUseActivity.class, EmptyViewUseActivity.class, ItemDragAndSwipeUseActivity.class, ItemClickActivity.class, ExpandableUseActivity.class, DataBindingUseActivity.class,UpFetchUseActivity.class}; - private static final String[] TITLE = {"Animation", "MultipleItem", "Header/Footer", "PullToRefresh", "Section", "EmptyView", "DragAndSwipe", "ItemClick", "ExpandableItem", "DataBinding", "UpFetchData"}; - private static final int[] IMG = {R.mipmap.gv_animation, R.mipmap.gv_multipleltem, R.mipmap.gv_header_and_footer, R.mipmap.gv_pulltorefresh, R.mipmap.gv_section, R.mipmap.gv_empty, R.mipmap.gv_drag_and_swipe, R.mipmap.gv_item_click, R.mipmap.gv_expandable, R.mipmap.gv_databinding,R.drawable.gv_up_fetch}; + private static final Class[] ACTIVITY = {AnimationUseActivity.class, ChooseMultipleItemUseTypeActivity.class, HeaderAndFooterUseActivity.class, PullToRefreshUseActivity.class, SectionUseActivity.class, EmptyViewUseActivity.class, ItemDragAndSwipeUseActivity.class, ItemClickActivity.class, ExpandableUseActivity.class, DataBindingUseActivity.class,UpFetchUseActivity.class,SectionMultipleItemUseActivity.class}; + private static final String[] TITLE = {"Animation", "MultipleItem", "Header/Footer", "PullToRefresh", "Section", "EmptyView", "DragAndSwipe", "ItemClick", "ExpandableItem", "DataBinding", "UpFetchData", "SectionMultipleItem"}; + private static final int[] IMG = {R.mipmap.gv_animation, R.mipmap.gv_multipleltem, R.mipmap.gv_header_and_footer, R.mipmap.gv_pulltorefresh, R.mipmap.gv_section, R.mipmap.gv_empty, R.mipmap.gv_drag_and_swipe, R.mipmap.gv_item_click, R.mipmap.gv_expandable, R.mipmap.gv_databinding,R.drawable.gv_up_fetch, R.mipmap.gv_multipleltem}; private ArrayList mDataList; private RecyclerView mRecyclerView; diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/SectionMultipleItemUseActivity.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/SectionMultipleItemUseActivity.java new file mode 100644 index 000000000..9f86d3687 --- /dev/null +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/SectionMultipleItemUseActivity.java @@ -0,0 +1,42 @@ +package com.chad.baserecyclerviewadapterhelper; + +import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.Toast; + +import com.chad.baserecyclerviewadapterhelper.adapter.SectionMultipleItemAdapter; +import com.chad.baserecyclerviewadapterhelper.base.BaseActivity; +import com.chad.baserecyclerviewadapterhelper.data.DataServer; +import com.chad.baserecyclerviewadapterhelper.entity.SectionMultipleItem; +import com.chad.library.adapter.base.BaseQuickAdapter; + +import java.util.List; + +/** + * https://github.com/CymChad/BaseRecyclerViewAdapterHelper + */ +public class SectionMultipleItemUseActivity extends BaseActivity { + private RecyclerView mRecyclerView; + private List mData; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_section_uer); + setBackBtn(); + setTitle("SectionMultiple Use"); + mRecyclerView = (RecyclerView) findViewById(R.id.rv_list); + mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + mData = DataServer.getSectionMultiData(); + SectionMultipleItemAdapter sectionAdapter = new SectionMultipleItemAdapter(R.layout.def_section_head, mData); + sectionAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { + @Override + public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { + Toast.makeText(SectionMultipleItemUseActivity.this, "onItemChildClick" + position, Toast.LENGTH_LONG).show(); + } + }); + mRecyclerView.setAdapter(sectionAdapter); + } +} diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/SectionMultipleItemAdapter.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/SectionMultipleItemAdapter.java new file mode 100644 index 000000000..df8687da6 --- /dev/null +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/SectionMultipleItemAdapter.java @@ -0,0 +1,54 @@ +package com.chad.baserecyclerviewadapterhelper.adapter; + +import com.chad.baserecyclerviewadapterhelper.R; +import com.chad.baserecyclerviewadapterhelper.entity.MultipleItem; +import com.chad.baserecyclerviewadapterhelper.entity.SectionMultipleItem; +import com.chad.library.adapter.base.BaseSectionMultiItemQuickAdapter; +import com.chad.library.adapter.base.BaseViewHolder; + +import java.util.List; + +/** + * https://github.com/CymChad/BaseRecyclerViewAdapterHelper + */ +public class SectionMultipleItemAdapter extends BaseSectionMultiItemQuickAdapter { + /** + * Same as QuickAdapter#QuickAdapter(Context,int) but with + * some initialization data. + * + * @param sectionHeadResId The section head layout id for each item + * @param data A new list is created out of this one to avoid mutable list + */ + public SectionMultipleItemAdapter(int sectionHeadResId, List data) { + super(sectionHeadResId, data); + addItemType(SectionMultipleItem.TEXT, R.layout.item_text_view); + addItemType(SectionMultipleItem.IMG, R.layout.item_image_view); + addItemType(SectionMultipleItem.IMG_TEXT, R.layout.item_img_text_view); + } + + @Override + protected void convertHead(BaseViewHolder helper, final SectionMultipleItem item) { + helper.setText(R.id.header, item.header); + helper.setVisible(R.id.more, item.isMore()); + helper.addOnClickListener(R.id.more); + } + + @Override + protected void convert(BaseViewHolder helper, SectionMultipleItem item) { + switch (helper.getItemViewType()) { + case MultipleItem.TEXT: + helper.setText(R.id.tv, item.getVideo().getName()); + break; + case MultipleItem.IMG_TEXT: + switch (helper.getLayoutPosition() % 2) { + case 0: + helper.setImageResource(R.id.iv, R.mipmap.animation_img1); + break; + case 1: + helper.setImageResource(R.id.iv, R.mipmap.animation_img2); + break; + } + break; + } + } +} diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/data/DataServer.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/data/DataServer.java index fd23a3819..f59681dcc 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/data/DataServer.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/data/DataServer.java @@ -4,6 +4,7 @@ import com.chad.baserecyclerviewadapterhelper.entity.MultipleItem; import com.chad.baserecyclerviewadapterhelper.entity.MySection; import com.chad.baserecyclerviewadapterhelper.entity.NormalMultipleEntity; +import com.chad.baserecyclerviewadapterhelper.entity.SectionMultipleItem; import com.chad.baserecyclerviewadapterhelper.entity.Status; import com.chad.baserecyclerviewadapterhelper.entity.Video; @@ -73,6 +74,32 @@ public static List getSampleData() { return list; } + public static List getSectionMultiData() { + List list = new ArrayList<>(); + Video video = new Video(HTTPS_AVATARS1_GITHUBUSERCONTENT_COM_LINK, CYM_CHAD); + list.add(new SectionMultipleItem(true, "Section 1", true)); + list.add(new SectionMultipleItem(SectionMultipleItem.IMG, video)); + list.add(new SectionMultipleItem(SectionMultipleItem.TEXT, video)); + list.add(new SectionMultipleItem(SectionMultipleItem.IMG_TEXT, video)); + list.add(new SectionMultipleItem(true, "Section 2", false)); + list.add(new SectionMultipleItem(SectionMultipleItem.IMG_TEXT, video)); + list.add(new SectionMultipleItem(SectionMultipleItem.IMG, video)); + list.add(new SectionMultipleItem(SectionMultipleItem.IMG_TEXT, video)); + list.add(new SectionMultipleItem(SectionMultipleItem.TEXT, video)); + list.add(new SectionMultipleItem(true, "Section 3", false)); + list.add(new SectionMultipleItem(SectionMultipleItem.TEXT, video)); + list.add(new SectionMultipleItem(SectionMultipleItem.IMG_TEXT, video)); + list.add(new SectionMultipleItem(SectionMultipleItem.IMG, video)); + list.add(new SectionMultipleItem(true, "Section 4", false)); + list.add(new SectionMultipleItem(SectionMultipleItem.IMG, video)); + list.add(new SectionMultipleItem(SectionMultipleItem.TEXT, video)); + list.add(new SectionMultipleItem(true, "Section 5", false)); + list.add(new SectionMultipleItem(SectionMultipleItem.IMG_TEXT, video)); + list.add(new SectionMultipleItem(SectionMultipleItem.IMG_TEXT, video)); + list.add(new SectionMultipleItem(SectionMultipleItem.IMG_TEXT, video)); + return list; + } + public static List getStrData() { List list = new ArrayList<>(); for (int i = 0; i < 20; i++) { diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/entity/SectionMultipleItem.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/entity/SectionMultipleItem.java new file mode 100644 index 000000000..645631766 --- /dev/null +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/entity/SectionMultipleItem.java @@ -0,0 +1,52 @@ +package com.chad.baserecyclerviewadapterhelper.entity; + +import com.chad.library.adapter.base.entity.MultiItemEntity; +import com.chad.library.adapter.base.entity.SectionMultiEntity; + +/** + * https://github.com/CymChad/BaseRecyclerViewAdapterHelper + */ +public class SectionMultipleItem extends SectionMultiEntity