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 1/5] =?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