From 749371b75edda1da0eab98e7726a833d87ff7729 Mon Sep 17 00:00:00 2001 From: chad <54050520@qq.com> Date: Fri, 28 Apr 2017 15:52:25 +0800 Subject: [PATCH] fixbug #1078 --- app/src/main/AndroidManifest.xml | 7 ++++--- .../SectionUseActivity.java | 19 +++---------------- .../adapter/ExpandableItemAdapter.java | 9 +++++++++ app/src/main/res/values/strings.xml | 2 +- .../adapter/base/BaseQuickAdapter.java | 13 +++++++++---- .../adapter/base/BaseSectionQuickAdapter.java | 9 +++++++-- 6 files changed, 33 insertions(+), 26 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 941b61ec5..17f1216a3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,8 +12,7 @@ android:supportsRtl="true" android:theme="@style/AppTheme"> - + @@ -32,7 +31,9 @@ - + diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/SectionUseActivity.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/SectionUseActivity.java index 699fc2a3f..ae2987524 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/SectionUseActivity.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/SectionUseActivity.java @@ -1,8 +1,8 @@ package com.chad.baserecyclerviewadapterhelper; import android.os.Bundle; +import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.StaggeredGridLayoutManager; import android.view.View; import android.widget.Toast; @@ -28,23 +28,10 @@ protected void onCreate(Bundle savedInstanceState) { setBackBtn(); setTitle("Section Use"); mRecyclerView = (RecyclerView) findViewById(R.id.rv_list); - mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)); + mRecyclerView.setLayoutManager(new GridLayoutManager(this,2)); mData = DataServer.getSampleData(); SectionAdapter sectionAdapter = new SectionAdapter(R.layout.item_section_content, R.layout.def_section_head, mData); -// mRecyclerView.addOnItemTouchListener(new OnItemClickListener() { -// -// @Override -// public void onSimpleItemClick(BaseQuickAdapter adapter, View view, int position) { -// -// } -// -// @Override -// public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { -// -// } -// -// -// }); + sectionAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { @Override public void onItemClick(BaseQuickAdapter adapter, View view, int position) { diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/ExpandableItemAdapter.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/ExpandableItemAdapter.java index b211b6122..f85226c0c 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/ExpandableItemAdapter.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/ExpandableItemAdapter.java @@ -96,6 +96,15 @@ public void onClick(View v) { case TYPE_PERSON: final Person person = (Person)item; holder.setText(R.id.tv, person.name + " parent pos: " + getParentPosition(person)); + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + int cp = getParentPosition(person); + ((Level1Item)getData().get(cp)).removeSubItem(person); + getData().remove(holder.getLayoutPosition()); + notifyItemRemoved(holder.getLayoutPosition()); + } + }); break; } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 53213fb9f..ab62bf1d8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,4 +1,4 @@ - + BRVAH HeaderAndFooterUseActivity Network error 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 12d397cb7..5793f65a9 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 @@ -747,18 +747,23 @@ public int getSpanSize(int position) { return 1; } if (mSpanSizeLookup == null) { - return (type == EMPTY_VIEW || type == HEADER_VIEW || type == FOOTER_VIEW || type == - LOADING_VIEW) ? gridManager.getSpanCount() : 1; + return isFixedViewType(type) ? gridManager.getSpanCount() : 1; } else { - return (type == EMPTY_VIEW || type == HEADER_VIEW || type == FOOTER_VIEW || type == - LOADING_VIEW) ? gridManager.getSpanCount() : mSpanSizeLookup.getSpanSize(gridManager, + return (isFixedViewType(type)) ? gridManager.getSpanCount() : mSpanSizeLookup.getSpanSize(gridManager, position - getHeaderLayoutCount()); } } + + }); } } + protected boolean isFixedViewType(int type) { + return type == EMPTY_VIEW || type == HEADER_VIEW || type == FOOTER_VIEW || type == + LOADING_VIEW; + } + /** * if asFlow is true, footer/header will arrange like normal item view. * only works when use {@link GridLayoutManager},and it will ignore span size. 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 475ede144..cef641e6e 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 @@ -23,14 +23,14 @@ public abstract class BaseSectionQuickAdapter data) { + public BaseSectionQuickAdapter(int layoutResId, int sectionHeadResId, List data) { super(layoutResId, data); this.mSectionHeadResId = sectionHeadResId; } @Override protected int getDefItemViewType(int position) { - return mData.get(position).isHeader ? SECTION_HEADER_VIEW : 0; + return mData.get(position).isHeader ? SECTION_HEADER_VIEW : 0; } @Override @@ -41,6 +41,11 @@ protected K onCreateDefViewHolder(ViewGroup parent, int viewType) { return super.onCreateDefViewHolder(parent, viewType); } + @Override + protected boolean isFixedViewType(int type) { + return super.isFixedViewType(type)|| type == SECTION_HEADER_VIEW; + } + @Override public void onBindViewHolder(K holder, int positions) { switch (holder.getItemViewType()) {