diff --git a/.travis.yml b/.travis.yml
index c8908aab0..abf269e44 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,21 +3,18 @@ jdk: oraclejdk8
sudo: false
android:
- components:
+components:
- tools
- - build-tools-26.0.2
- - android-26
+ - 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
- - 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
diff --git a/README.md b/README.md
index 2d210c794..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,
@@ -8,7 +8,7 @@ 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)
## [UI](https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/694)
## Demo
@@ -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)
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/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b429d8241..9a9b1a294 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -22,7 +22,9 @@
+
+
@@ -33,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/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..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, MultipleItemUseActivity.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/MultipleItemRvAdapterUseActivity.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemRvAdapterUseActivity.java
new file mode 100644
index 000000000..099522b98
--- /dev/null
+++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemRvAdapterUseActivity.java
@@ -0,0 +1,97 @@
+package com.chad.baserecyclerviewadapterhelper;
+
+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;
+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;
+
+/**
+ *
+ * @author ChayChan
+ * @description: MultipleItemRvAdapter's usage
+ * @date 2018/3/30 10:54
+ */
+
+public class MultipleItemRvAdapterUseActivity extends BaseActivity {
+
+ private List mData;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_multiple_item_use);
+
+ setTitle("MultipleItemRvAdapter");
+ setBackBtn();
+
+ RecyclerView 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;
+ }
+ }
+ });
+
+/**
+ * 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 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);
+ }
+}
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
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..4207d4087
--- /dev/null
+++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/SectionMultipleItemUseActivity.java
@@ -0,0 +1,60 @@
+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;
+
+/**
+ * to get SectionMultipleItem you need follow two things
+ * 1.create entity which extend SectionMultiEntity
+ * 2.create adapter which extend BaseSectionMultiItemQuickAdapter
+ */
+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));
+
+ // 1. create entityList which item data extend SectionMultiEntity
+ mData = DataServer.getSectionMultiData();
+
+ // create adapter which extend BaseSectionMultiItemQuickAdapter provide your headerResId
+ 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) {
+ SectionMultipleItem item = (SectionMultipleItem) adapter.getData().get(position);
+ switch (view.getId()) {
+ case R.id.card_view:
+ // 获取主体item相应数据给后期使用
+ if (item.getVideo() != null) {
+ Toast.makeText(SectionMultipleItemUseActivity.this, item.getVideo().getName(), Toast.LENGTH_LONG).show();
+ }
+ break;
+ default:
+ Toast.makeText(SectionMultipleItemUseActivity.this, "OnItemChildClickListener " + position, Toast.LENGTH_LONG).show();
+ break;
+
+ }
+ }
+ });
+ mRecyclerView.setAdapter(sectionAdapter);
+ }
+}
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..40b0e1bdd
--- /dev/null
+++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/DemoMultipleItemRvAdapter.java
@@ -0,0 +1,66 @@
+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.BaseViewHolder;
+import com.chad.library.adapter.base.MultipleItemRvAdapter;
+
+import java.util.List;
+
+/**
+ * @author ChayChan
+ * modify by AllenCoder 2018/04/11
+ * @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/SectionMultipleItemAdapter.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/SectionMultipleItemAdapter.java
new file mode 100644
index 000000000..e47e4944a
--- /dev/null
+++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/SectionMultipleItemAdapter.java
@@ -0,0 +1,57 @@
+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 {
+ /**
+ * init SectionMultipleItemAdapter
+ * 1. add your header resource layout
+ * 2. add some kind of items
+ *
+ * @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_TEXT, R.layout.item_img_text_view);
+ }
+
+ @Override
+ protected void convertHead(BaseViewHolder helper, final SectionMultipleItem item) {
+ // deal with header viewHolder
+ 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) {
+ // deal with multiple type items viewHolder
+ helper.addOnClickListener(R.id.card_view);
+ 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/adapter/provider/ImgItemProvider.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java
new file mode 100644
index 000000000..6a719ea8c
--- /dev/null
+++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/ImgItemProvider.java
@@ -0,0 +1,50 @@
+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.provider.BaseItemProvider;
+
+/**
+ * https://github.com/chaychan
+ *
+ * @author ChayChan
+ * @description: Img ItemProvider
+ * @date 2018/3/30 11:39
+ */
+
+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) {
+ 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..d5d87227e
--- /dev/null
+++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextImgItemProvider.java
@@ -0,0 +1,49 @@
+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.provider.BaseItemProvider;
+
+/**
+ * https://github.com/chaychan
+ * @author ChayChan
+ * @description: Text Img ItemProvider
+ * @date 2018/3/30 11:39
+ */
+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{
+ 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..86b1c7061
--- /dev/null
+++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/provider/TextItemProvider.java
@@ -0,0 +1,46 @@
+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.provider.BaseItemProvider;
+
+/**
+ * https://github.com/chaychan
+ *
+ * @author ChayChan
+ * @description: Text ItemProvider
+ * @date 2018/3/30 11:39
+ */
+
+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) {
+ 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..67ae1d228 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,8 @@
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;
@@ -16,6 +18,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() {
}
@@ -71,6 +74,34 @@ 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);
+
+ // add section data
+ list.add(new SectionMultipleItem(true, "Section 1", true));
+ // add multiple type item data ---start---
+ list.add(new SectionMultipleItem(SectionMultipleItem.TEXT, new Video(HTTPS_AVATARS1_GITHUBUSERCONTENT_COM_LINK, "video_id_0")));
+ list.add(new SectionMultipleItem(SectionMultipleItem.TEXT, new Video(HTTPS_AVATARS1_GITHUBUSERCONTENT_COM_LINK, "video_id_1")));
+ list.add(new SectionMultipleItem(SectionMultipleItem.IMG_TEXT, new Video(HTTPS_AVATARS1_GITHUBUSERCONTENT_COM_LINK, "video_id_2")));
+ // ---end---
+
+ list.add(new SectionMultipleItem(true, "Section 2", false));
+ list.add(new SectionMultipleItem(SectionMultipleItem.IMG_TEXT, video));
+ list.add(new SectionMultipleItem(SectionMultipleItem.IMG_TEXT, video));
+ list.add(new SectionMultipleItem(SectionMultipleItem.TEXT, video));
+ list.add(new SectionMultipleItem(SectionMultipleItem.TEXT, video));
+ list.add(new SectionMultipleItem(true, "Section 3", false));
+ list.add(new SectionMultipleItem(SectionMultipleItem.IMG_TEXT, video));
+ list.add(new SectionMultipleItem(true, "Section 4", false));
+ 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++) {
@@ -96,6 +127,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/java/com/chad/baserecyclerviewadapterhelper/entity/SectionMultipleItem.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/entity/SectionMultipleItem.java
new file mode 100644
index 000000000..84384ce21
--- /dev/null
+++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/entity/SectionMultipleItem.java
@@ -0,0 +1,49 @@
+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