diff --git a/app/src/main/java/cn/finalteam/loadingviewfinal/sample/ui/fragment/ptr/PtrRecyclerViewFragment.java b/app/src/main/java/cn/finalteam/loadingviewfinal/sample/ui/fragment/ptr/PtrRecyclerViewFragment.java index f5cbafd..286f12e 100644 --- a/app/src/main/java/cn/finalteam/loadingviewfinal/sample/ui/fragment/ptr/PtrRecyclerViewFragment.java +++ b/app/src/main/java/cn/finalteam/loadingviewfinal/sample/ui/fragment/ptr/PtrRecyclerViewFragment.java @@ -2,7 +2,7 @@ import android.os.Bundle; import android.support.annotation.Nullable; -import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.GridLayoutManager; import android.view.View; import android.widget.FrameLayout; import android.widget.Toast; @@ -61,9 +61,16 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { mGameList = new ArrayList<>(); mNewGameRvAdapter = new NewGameRvAdapter(getContext(), mGameList); - LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext()); - linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); - mRvGames.setLayoutManager(linearLayoutManager); + // LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext()); +// linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); +// mRvGames.setLayoutManager(linearLayoutManager); + // mRvGames.setLayoutManager(linearLayoutManager); + GridLayoutManager gridLayoutManager= new GridLayoutManager(getContext(), 2, + GridLayoutManager.VERTICAL, false); +// 设置布局管理器 + mRvGames.setLayoutManager(gridLayoutManager); +// mRvGames.setLayoutManager(new StaggeredGridLayoutManager(2, +// StaggeredGridLayoutManager.VERTICAL)); mRvGames.setEmptyView(mFlEmptyView); mRvGames.setAdapter(mNewGameRvAdapter); diff --git a/build.gradle b/build.gradle index 5c3f6ae..355b4ee 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.0.0-beta7' + classpath 'com.android.tools.build:gradle:2.1.2' classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.6' diff --git a/loading-more-view/src/main/java/cn/finalteam/loadingviewfinal/HeaderAndFooterRecyclerViewAdapter.java b/loading-more-view/src/main/java/cn/finalteam/loadingviewfinal/HeaderAndFooterRecyclerViewAdapter.java index 38c3f05..09eaa79 100644 --- a/loading-more-view/src/main/java/cn/finalteam/loadingviewfinal/HeaderAndFooterRecyclerViewAdapter.java +++ b/loading-more-view/src/main/java/cn/finalteam/loadingviewfinal/HeaderAndFooterRecyclerViewAdapter.java @@ -1,5 +1,6 @@ package cn.finalteam.loadingviewfinal; +import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.StaggeredGridLayoutManager; import android.view.View; @@ -63,7 +64,43 @@ public void setAdapter(RecyclerView.Adapter adapter) { notifyItemRangeInserted(getHeadersCount(), mAdapter.getItemCount()); } } + @Override + public void onAttachedToRecyclerView(RecyclerView recyclerView) { +// Log.e("HeaderAdapter", "onAttachedToRecyclerView"); + super.onAttachedToRecyclerView(recyclerView); + final RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); + if (layoutManager instanceof GridLayoutManager) { + final GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager; + gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { + @Override + public int getSpanSize(int position) { + int result = 1; + int viewType = getItemViewType(position); + if (mFooterViewTypes.contains(viewType)) { + result = ((GridLayoutManager) layoutManager).getSpanCount(); + } else if (mHeaderViews.contains(viewType)) { + result = ((GridLayoutManager) layoutManager).getSpanCount(); + } +// Log.e("HeaderAdapter", "onAttachedToRecyclerView getSpanSize==" + result); + return result; + } + }); + } + } + @Override + public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) { + int position = holder.getLayoutPosition(); + int viewType = getItemViewType(position); + if (mFooterViewTypes.contains(viewType) || mHeaderViews.contains(viewType)) { + ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams(); + if (lp != null + && lp instanceof StaggeredGridLayoutManager.LayoutParams) { + StaggeredGridLayoutManager.LayoutParams p = (StaggeredGridLayoutManager.LayoutParams) lp; + p.setFullSpan(true); + } + } + } /** * @return RecyclerView.Adapter */ diff --git a/loading-more-view/src/main/java/cn/finalteam/loadingviewfinal/RecyclerViewFinal.java b/loading-more-view/src/main/java/cn/finalteam/loadingviewfinal/RecyclerViewFinal.java index d5c157b..a61c787 100644 --- a/loading-more-view/src/main/java/cn/finalteam/loadingviewfinal/RecyclerViewFinal.java +++ b/loading-more-view/src/main/java/cn/finalteam/loadingviewfinal/RecyclerViewFinal.java @@ -125,6 +125,7 @@ public void setAdapter(RecyclerView.Adapter adapter) { adapter.registerAdapterDataObserver(mDataObserver); mHeaderAndFooterRecyclerViewAdapter.setAdapter(adapter); + mHeaderAndFooterRecyclerViewAdapter.onAttachedToRecyclerView(this);//手动调用 } @Override