diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemUseActivity.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemUseActivity.java index b7c36d89e..04363a2ca 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemUseActivity.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/MultipleItemUseActivity.java @@ -5,7 +5,7 @@ import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; -import com.chad.baserecyclerviewadapterhelper.adapter.MultipleItemAdapter; +import com.chad.baserecyclerviewadapterhelper.adapter.MultipleItemQuickAdapter; import com.chad.baserecyclerviewadapterhelper.data.DataServer; /** * https://github.com/CymChad/BaseRecyclerViewAdapterHelper @@ -18,7 +18,7 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_multiple_item_use); mRecyclerView = (RecyclerView) findViewById(R.id.rv_list); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - MultipleItemAdapter multipleItemAdapter = new MultipleItemAdapter(this,DataServer.getStrData(),R.layout.image_view,R.layout.text_view); + MultipleItemQuickAdapter multipleItemAdapter = new MultipleItemQuickAdapter(this,DataServer.getMultipleItemData()); mRecyclerView.setAdapter(multipleItemAdapter); } } diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/MultipleItemAdapter.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/MultipleItemAdapter.java index 1ed23045b..bc1ade515 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/MultipleItemAdapter.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/MultipleItemAdapter.java @@ -13,6 +13,7 @@ /** * https://github.com/CymChad/BaseRecyclerViewAdapterHelper */ +@Deprecated public class MultipleItemAdapter extends BaseQuickAdapter { private static final int TEXT_TYPE = 1; private int mTextLayoutResId; @@ -49,7 +50,6 @@ protected void convert(BaseViewHolder helper, String item) { } public class TextViewHolder extends BaseViewHolder { - public TextViewHolder(View itemView) { super(itemView.getContext(), itemView); } diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/MultipleItemQuickAdapter.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/MultipleItemQuickAdapter.java new file mode 100644 index 000000000..cb407175c --- /dev/null +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/MultipleItemQuickAdapter.java @@ -0,0 +1,35 @@ +package com.chad.baserecyclerviewadapterhelper.adapter; + +import android.content.Context; + +import com.chad.baserecyclerviewadapterhelper.R; +import com.chad.baserecyclerviewadapterhelper.entity.MultipleItem; +import com.chad.library.adapter.base.BaseMultiItemQuickAdapter; +import com.chad.library.adapter.base.BaseViewHolder; + +import java.util.List; + +/** + * https://github.com/CymChad/BaseRecyclerViewAdapterHelper + */ +public class MultipleItemQuickAdapter extends BaseMultiItemQuickAdapter { + + public MultipleItemQuickAdapter(Context context, List data) { + super(context, data); + addItmeType(MultipleItem.TEXT, R.layout.text_view); + addItmeType(MultipleItem.IMG, R.layout.image_view); + } + + @Override + protected void convert(BaseViewHolder helper, MultipleItem item) { + switch (helper.getItemViewType()) { + case MultipleItem.TEXT: + helper.setImageUrl(R.id.tv, item.getContent()); + break; + case MultipleItem.IMG: + helper.setImageUrl(R.id.iv, item.getContent()); + break; + } + } + +} diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/SectionAdapter.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/SectionAdapter.java index 16f36c905..be3bac1ac 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/SectionAdapter.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/SectionAdapter.java @@ -32,8 +32,7 @@ public SectionAdapter(Context context, int layoutResId, int sectionHeadResId, Li @Override protected void convertHead(BaseViewHolder helper,final MySection item) { helper.setText(R.id.header, item.header); - if(!item.isMroe())helper.setVisible(R.id.more,false); - else + helper.setVisible(R.id.more,item.isMroe()); helper.setOnClickListener(R.id.more, new View.OnClickListener() { @Override public void onClick(View v) { 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 2634bea44..28ed372c8 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/data/DataServer.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/data/DataServer.java @@ -1,6 +1,7 @@ package com.chad.baserecyclerviewadapterhelper.data; +import com.chad.baserecyclerviewadapterhelper.entity.MultipleItem; import com.chad.baserecyclerviewadapterhelper.entity.MySection; import com.chad.baserecyclerviewadapterhelper.entity.Status; import com.chad.baserecyclerviewadapterhelper.entity.Video; @@ -80,6 +81,21 @@ public static List getStrData() { } return list; } + public static List getMultipleItemData() { + List list = new ArrayList<>(); + for (int i = 0; i < 20; i++) { + MultipleItem multipleItem = new MultipleItem(); + String str = HTTPS_AVATARS1_GITHUBUSERCONTENT_COM_LINK; + multipleItem.setItemType(MultipleItem.IMG); + if (i % 2 == 0) { + str = CYM_CHAD; + multipleItem.setItemType(MultipleItem.TEXT); + } + multipleItem.setContent(str); + list.add(multipleItem); + } + return list; + } } diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/entity/MultipleItem.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/entity/MultipleItem.java new file mode 100644 index 000000000..22b218c36 --- /dev/null +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/entity/MultipleItem.java @@ -0,0 +1,21 @@ +package com.chad.baserecyclerviewadapterhelper.entity; + +import com.chad.library.adapter.base.entity.MultiItemEntity; + +/** + * https://github.com/CymChad/BaseRecyclerViewAdapterHelper + */ +public class MultipleItem extends MultiItemEntity { + public static final int TEXT = 1; + public static final int IMG = 2; + + private String content; + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } +} 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 new file mode 100644 index 000000000..008776e85 --- /dev/null +++ b/library/src/main/java/com/chad/library/adapter/base/BaseMultiItemQuickAdapter.java @@ -0,0 +1,67 @@ +package com.chad.library.adapter.base; + +import android.content.Context; +import android.util.SparseArray; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.chad.library.adapter.base.entity.MultiItemEntity; + +import java.util.ArrayList; +import java.util.List; + +/** + * https://github.com/CymChad/BaseRecyclerViewAdapterHelper + */ +public abstract class BaseMultiItemQuickAdapter extends BaseQuickAdapter { + protected List mData; + private SparseArray layouts; + + /** + * Same as QuickAdapter#QuickAdapter(Context,int) but with + * some initialization data. + * @param context The context. + * @param data A new list is created out of this one to avoid mutable list + */ + public BaseMultiItemQuickAdapter(Context context, List data) { + super(context, data); + this.mData = data == null ? new ArrayList() : new ArrayList(data); + this.mContext = context; + } + + @Override + protected int getDefItemViewType(int position) { + return mData.get(position).getItemType(); + } + + + @Override + protected BaseViewHolder onCreateDefViewHolder(ViewGroup parent, int viewType) { + int layoutId = getLayoutId(viewType); + View view = LayoutInflater.from(parent.getContext()).inflate(layoutId, parent, false); + return new BaseViewHolder(mContext, view); + } + + private int getLayoutId(int viewType) { + return layouts.get(viewType); + } + + protected void addItmeType(int type, int layoutResId) { + if (layouts == null) { + layouts = new SparseArray<>(); + } + layouts.put(type, layoutResId); + } + + @Override + protected void convert(BaseViewHolder helper, Object item) { + convert(helper, (T) item); + } + + protected abstract void convert(BaseViewHolder helper, T item); + + +} + + 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 a15fd49ea..abe1a1a6a 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 @@ -26,7 +26,6 @@ import java.util.List; - /** * https://github.com/CymChad/BaseRecyclerViewAdapterHelper */ @@ -45,24 +44,23 @@ public abstract class BaseQuickAdapter extends RecyclerView.Adapter extends RecyclerView.Adapter data) { this.mContext = context; this.mLayoutResId = layoutResId; } + public BaseQuickAdapter(Context context, List data) { + this.mData = data == null ? new ArrayList() : new ArrayList(data); + this.mContext = context; + } public void remove(int position) { mData.remove(position); diff --git a/library/src/main/java/com/chad/library/adapter/base/BaseSectionQuickAdapter.java b/library/src/main/java/com/chad/library/adapter/base/BaseSectionQuickAdapter.java index ca362fa31..474247a37 100755 --- a/library/src/main/java/com/chad/library/adapter/base/BaseSectionQuickAdapter.java +++ b/library/src/main/java/com/chad/library/adapter/base/BaseSectionQuickAdapter.java @@ -18,7 +18,7 @@ public abstract class BaseSectionQuickAdapter extends B protected int mSectionHeadResId; protected List mData; - protected static final int SECTION_HEADER_VIEW = 0x00000004; + protected static final int SECTION_HEADER_VIEW = 0x00000444; /** * Same as QuickAdapter#QuickAdapter(Context,int) but with diff --git a/library/src/main/java/com/chad/library/adapter/base/entity/MultiItemEntity.java b/library/src/main/java/com/chad/library/adapter/base/entity/MultiItemEntity.java new file mode 100644 index 000000000..5a9f988ee --- /dev/null +++ b/library/src/main/java/com/chad/library/adapter/base/entity/MultiItemEntity.java @@ -0,0 +1,19 @@ +package com.chad.library.adapter.base.entity; + +/** + * 项目名称:base-adapter-helper-recyclerview-master + * 类描述: + * 创建人:Chad + * 创建时间:16/4/22 上午11:04 + */ +public abstract class MultiItemEntity { + protected int itemType; + + public int getItemType() { + return itemType; + } + + public void setItemType(int itemType) { + this.itemType = itemType; + } +}