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..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/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/data/DataServer.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/data/DataServer.java index fd23a3819..67ae1d228 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,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++) { 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