From a8297e98553be9601b8840aa2577e89dacc5bc77 Mon Sep 17 00:00:00 2001 From: 375585408 Date: Fri, 29 Apr 2016 13:57:37 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/base/BaseQuickAdapter.java | 120 ++++++++++++++++-- 1 file changed, 110 insertions(+), 10 deletions(-) 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 53234244a..fd9dae159 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 @@ -23,6 +23,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; +import java.util.Collection; import java.util.List; @@ -31,7 +32,7 @@ */ public abstract class BaseQuickAdapter extends RecyclerView.Adapter { - private boolean mNextLoadEnable; + private boolean mNextLoadEnable = false; private boolean mLoadingMoreEnable = false; private boolean mFirstOnlyEnable = true; private boolean mOpenAnimationEnable = false; @@ -91,11 +92,19 @@ public abstract class BaseQuickAdapter extends RecyclerView.Adapter data) { this.mData = data == null ? new ArrayList() : new ArrayList(data); this.mContext = context; - this.mLayoutResId = layoutResId; + if (layoutResId != 0) { + this.mLayoutResId = layoutResId; + } } public BaseQuickAdapter(Context context, List data) { - this.mData = data == null ? new ArrayList() : new ArrayList(data); - this.mContext = context; + this(context, 0, data); + } + + public BaseQuickAdapter(Context context) { + this(context, null); } public void remove(int position) { @@ -166,6 +221,32 @@ public void add(int position, T item) { notifyItemInserted(position); } + /** + * After clear the adapter's data, add new collection + * + * @param collection + */ + public void addAfterClear(Collection collection) { + try { + mData.clear(); + mData.addAll(collection); + notifyDataSetChanged(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * setting up a new instance to data; + * + * @param data + */ + public void setNewData(List data) { + this.mData = data; + notifyDataSetChanged(); + } + + public List getData() { return mData; } @@ -174,12 +255,14 @@ public List getData() { * Get the data item associated with the specified position in the data set. * * @param position Position of the item whose data we want within the adapter's - * data set. + * data set. * @return The data at the specified position. */ - public T getItem(int position){ + public T getItem(int position) { return mData.get(position); - }; + } + + ; public int getHeaderViewsCount() { return mHeaderView == null ? 0 : 1; @@ -309,6 +392,12 @@ public View getEmptyView() { return mEmptyView; } + /** + * see more {@link public void notifyDataChangedAfterLoadMore(boolean isNextLoad)} + * + * @param isNextLoad + */ + @Deprecated public void isNextLoad(boolean isNextLoad) { mNextLoadEnable = isNextLoad; mLoadingMoreEnable = false; @@ -316,6 +405,13 @@ public void isNextLoad(boolean isNextLoad) { } + public void notifyDataChangedAfterLoadMore(boolean isNextLoad) { + mNextLoadEnable = isNextLoad; + mLoadingMoreEnable = false; + notifyDataSetChanged(); + + } + @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { @@ -348,7 +444,7 @@ public void onClick(View v) { } } } else if (holder instanceof FooterViewHolder) { - if (mNextLoadEnable && !mLoadingMoreEnable && mRequestLoadMoreListener != null) { + if (isLoadMore()) { mLoadingMoreEnable = true; mRequestLoadMoreListener.onLoadMoreRequested(); if (holder.itemView.getLayoutParams() instanceof StaggeredGridLayoutManager.LayoutParams) { @@ -368,6 +464,10 @@ public void onClick(View v) { } } + private boolean isLoadMore() { + return mNextLoadEnable && enablePageSize != -1 && !mLoadingMoreEnable && mRequestLoadMoreListener != null && mData.size() >= enablePageSize; + } + protected View getItemView(int layoutResId, ViewGroup parent) { return LayoutInflater.from(parent.getContext()).inflate( layoutResId, parent, false); From bfdebf27b06a5647d9ab0676a66c4cf6610b04f6 Mon Sep 17 00:00:00 2001 From: 375585408 Date: Tue, 3 May 2016 16:55:19 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PullToRefreshUseActivity.java | 10 +++++--- .../adapter/base/BaseQuickAdapter.java | 24 +++++++++---------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/PullToRefreshUseActivity.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/PullToRefreshUseActivity.java index bf0e0a8bf..ddcf0efa0 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/PullToRefreshUseActivity.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/PullToRefreshUseActivity.java @@ -63,7 +63,8 @@ public void onLoadMoreRequested() { mRecyclerView.post(new Runnable() { @Override public void run() { - mQuickAdapter.isNextLoad(false); + // mQuickAdapter.isNextLoad(false); + mQuickAdapter.notifyDataChangedAfterLoadMore(false); } }); @@ -73,7 +74,8 @@ public void run() { public void run() { DataServer.addData(mQuickAdapter.getData(), PAGE_SIZE); mCurrentCounter = mQuickAdapter.getItemCount(); - mQuickAdapter.isNextLoad(true); + // mQuickAdapter.isNextLoad(true); + mQuickAdapter.notifyDataChangedAfterLoadMore(true); } }, delayMillis); @@ -97,7 +99,9 @@ private void initAdapter() { mQuickAdapter.openLoadAnimation(); mRecyclerView.setAdapter(mQuickAdapter); mCurrentCounter = mQuickAdapter.getItemCount(); - mQuickAdapter.setOnLoadMoreListener(PAGE_SIZE, this); + // mQuickAdapter.setOnLoadMoreListener(PAGE_SIZE, this); + mQuickAdapter.setOnLoadMoreListener(this); + mQuickAdapter.openLoadMore(PAGE_SIZE,true);//or call mQuickAdapter.setPageSize(PAGE_SIZE); mQuickAdapter.openLoadMore(true); addHeadView(); mQuickAdapter.setOnRecyclerViewItemClickListener(new BaseQuickAdapter.OnRecyclerViewItemClickListener() { @Override 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 03fe96f5e..f23349d0a 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 @@ -93,7 +93,7 @@ public abstract class BaseQuickAdapter extends RecyclerView.Adapter= enablePageSize; + return mNextLoadEnable && pageSize != -1 && !mLoadingMoreEnable && mRequestLoadMoreListener != null && mData.size() >= pageSize; } protected View getItemView(int layoutResId, ViewGroup parent) {