android.support.v7.widget.GridLayoutManager#setSpanCount ( )源码实例Demo

下面列出了android.support.v7.widget.GridLayoutManager#setSpanCount ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: videocreator   文件: CommonAdapter.java
@Override
public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) {
    if (mSupport == null || recyclerView == null) {
        return;
    }
    RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
    if (layoutManager instanceof GridLayoutManager) {
        final GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager;
        final GridLayoutManager.SpanSizeLookup spanSizeLookup = gridLayoutManager.getSpanSizeLookup();
        // 如果设置合并单元格就占用SpanCount那个多个位置
        gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                if (mSupport.isSpan(data.get(position))) {
                    return gridLayoutManager.getSpanCount();
                } else if (spanSizeLookup != null) {
                    return spanSizeLookup.getSpanSize(position);
                }
                return 1;
            }
        });
        gridLayoutManager.setSpanCount(gridLayoutManager.getSpanCount());
    }
}
 
源代码2 项目: styT   文件: HeaderAndFooterWrapper.java
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
    super.onAttachedToRecyclerView(recyclerView);
    //为了兼容GridLayout
    RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
    if (layoutManager instanceof GridLayoutManager) {
        final GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager;
        final GridLayoutManager.SpanSizeLookup spanSizeLookup = gridLayoutManager.getSpanSizeLookup();

        gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                if (isHeaderViewPos(position)) {
                    return gridLayoutManager.getSpanCount();
                } else if (isFooterViewPos(position)) {
                    return gridLayoutManager.getSpanCount();
                }
                if (spanSizeLookup != null)
                    return spanSizeLookup.getSpanSize(position);
                return 1;
            }
        });
        gridLayoutManager.setSpanCount(gridLayoutManager.getSpanCount());
    }

}
 
源代码3 项目: MvpRoute   文件: BaseAdapter.java
/**
 * 解决GrildLayoutManager问题
 *
 * @param recyclerView
 */
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
	super.onAttachedToRecyclerView(recyclerView);
	RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
	if (layoutManager instanceof GridLayoutManager) {
		final GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager;
		final GridLayoutManager.SpanSizeLookup spanSizeLookup = gridLayoutManager.getSpanSizeLookup();

		gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
			@Override
			public int getSpanSize(int position) {
				if (isHeaderPos(position)) {
					return gridLayoutManager.getSpanCount();
				} else if (isFooterPos(position)) {
					return gridLayoutManager.getSpanCount();
				}
				if (spanSizeLookup != null) {
					return spanSizeLookup.getSpanSize(position);
				}
				return 1;
			}
		});
		gridLayoutManager.setSpanCount(gridLayoutManager.getSpanCount());
	}
}
 
源代码4 项目: PocketEOS-Android   文件: WrapperUtils.java
public static void onAttachedToRecyclerView(RecyclerView.Adapter innerAdapter, RecyclerView recyclerView, final SpanSizeCallback callback)
{
    innerAdapter.onAttachedToRecyclerView(recyclerView);

    RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
    if (layoutManager instanceof GridLayoutManager)
    {
        final GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager;
        final GridLayoutManager.SpanSizeLookup spanSizeLookup = gridLayoutManager.getSpanSizeLookup();

        gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup()
        {
            @Override
            public int getSpanSize(int position)
            {
                return callback.getSpanSize(gridLayoutManager, spanSizeLookup, position);
            }
        });
        gridLayoutManager.setSpanCount(gridLayoutManager.getSpanCount());
    }
}
 
源代码5 项目: MVVM-JueJin   文件: WrapperUtils.java
public static void onAttachedToRecyclerView(RecyclerView.Adapter innerAdapter, RecyclerView recyclerView, final SpanSizeCallback callback)
{
    innerAdapter.onAttachedToRecyclerView(recyclerView);

    RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
    if (layoutManager instanceof GridLayoutManager)
    {
        final GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager;
        final GridLayoutManager.SpanSizeLookup spanSizeLookup = gridLayoutManager.getSpanSizeLookup();

        gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup()
        {
            @Override
            public int getSpanSize(int position)
            {
                return callback.getSpanSize(gridLayoutManager, spanSizeLookup, position);
            }
        });
        gridLayoutManager.setSpanCount(gridLayoutManager.getSpanCount());
    }
}
 
源代码6 项目: Bailan   文件: WrapperUtils.java
public static void onAttachedToRecyclerView(RecyclerView.Adapter innerAdapter, RecyclerView recyclerView, final SpanSizeCallback callback) {
    innerAdapter.onAttachedToRecyclerView(recyclerView);

    RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
    if (layoutManager instanceof GridLayoutManager) {
        final GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager;
        final GridLayoutManager.SpanSizeLookup spanSizeLookup = gridLayoutManager.getSpanSizeLookup();

        gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                return callback.getSpanSize(gridLayoutManager, spanSizeLookup, position);
            }
        });
        gridLayoutManager.setSpanCount(gridLayoutManager.getSpanCount());
    }
}
 
源代码7 项目: FamilyChat   文件: RcvSectionAdapter.java
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView)
{
    RecyclerView.LayoutManager manager = recyclerView.getLayoutManager();
    if (manager instanceof GridLayoutManager)
    {
        final GridLayoutManager gridManager = ((GridLayoutManager) manager);
        gridManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup()
        {
            @Override
            public int getSpanSize(int position)
            {
                if (isInSectionPos(position)
                        || isInHeadViewPos(position)
                        || isInFootViewPos(position)
                        || isInLoadMorePos(position)
                        || isInEmptyStatus())
                    return gridManager.getSpanCount();
                else
                    return 1;
            }
        });
        gridManager.setSpanCount(gridManager.getSpanCount());
    }
}
 
源代码8 项目: FamilyChat   文件: RcvMutilAdapter.java
/**
 * 添加HeadView或FootView或LoadMore或EmptyView
 * 兼容GridLayoutMananger的方法
 */
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView)
{
    super.onAttachedToRecyclerView(recyclerView);
    RecyclerView.LayoutManager manager = recyclerView.getLayoutManager();
    if (manager instanceof GridLayoutManager)
    {
        final GridLayoutManager gridManager = ((GridLayoutManager) manager);
        gridManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup()
        {
            @Override
            public int getSpanSize(int position)
            {
                if (isInHeadViewPos(position)
                        || isInFootViewPos(position)
                        || isInLoadMorePos(position)
                        || isInEmptyStatus())
                    return gridManager.getSpanCount();
                else
                    return 1;
            }
        });
        gridManager.setSpanCount(gridManager.getSpanCount());
    }
}
 
源代码9 项目: candybar-library   文件: ApplyFragment.java
private void resetSpanSizeLookUp() {
    int column = getActivity().getResources().getInteger(R.integer.apply_column_count);
    LauncherAdapter adapter = (LauncherAdapter) mRecyclerView.getAdapter();
    GridLayoutManager manager = (GridLayoutManager) mRecyclerView.getLayoutManager();

    try {
        manager.setSpanCount(column);

        manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                if (position == adapter.getFirstHeaderPosition() || position == adapter.getLastHeaderPosition())
                    return column;
                return 1;
            }
        });
    } catch (Exception ignored) {}
}
 
源代码10 项目: baseAdapter   文件: WrapperUtils.java
public static void onAttachedToRecyclerView(RecyclerView.Adapter innerAdapter, RecyclerView recyclerView, final SpanSizeCallback callback)
{
    innerAdapter.onAttachedToRecyclerView(recyclerView);

    RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
    if (layoutManager instanceof GridLayoutManager)
    {
        final GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager;
        final GridLayoutManager.SpanSizeLookup spanSizeLookup = gridLayoutManager.getSpanSizeLookup();

        gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup()
        {
            @Override
            public int getSpanSize(int position)
            {
                return callback.getSpanSize(gridLayoutManager, spanSizeLookup, position);
            }
        });
        gridLayoutManager.setSpanCount(gridLayoutManager.getSpanCount());
    }
}
 
@Override
public void setLayoutManager(final RecyclerView recyclerView) {
    final GridLayoutManager gridLayoutManager = new GridLayoutManager(recyclerView.getContext(), getColumnSize() * getColumnMultiplier());
    gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
        @Override
        public int getSpanSize(int position) {

            if(!(recyclerView.getAdapter() instanceof SpannableRecyclerAdapter)){
                throw new IllegalStateException("RecyclerView adapter must extend SpannableRecyclerAdapter");
            }

            return AptoideUtils.UI.getSpanSize(recyclerView, position);
        }
    });

    gridLayoutManager.setSpanCount(getColumnSize() * getColumnMultiplier());
    recyclerView.setLayoutManager(gridLayoutManager);
}
 
源代码12 项目: aptoide-client   文件: GridRecyclerFragment.java
@Override
public void setLayoutManager(final RecyclerView recyclerView) {
    final GridLayoutManager gridLayoutManager = new GridLayoutManager(recyclerView.getContext(), getColumnSize() * 2);
    gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
        @Override
        public int getSpanSize(int position) {

            if(!(recyclerView.getAdapter() instanceof SpannableRecyclerAdapter)){
                throw new IllegalStateException("RecyclerView adapter must implement SpannableRecyclerAdapter");
            }

            return AptoideUtils.UI.getSpanSize(recyclerView, position);
        }
    });

    // we need to force the spanCount, or it will crash.
    // https://code.google.com/p/android/issues/detail?id=182400
    gridLayoutManager.setSpanCount(getColumnSize()* 2);
    recyclerView.setLayoutManager(gridLayoutManager);
}
 
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
    mAdapter.onAttachedToRecyclerView(recyclerView);
    RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
    if (layoutManager instanceof GridLayoutManager) {
        final GridLayoutManager manager = (GridLayoutManager) layoutManager;
        manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                return (isHeaderViewPos(position) || isFooterViewPos(position)) ?
                        manager.getSpanCount() : 1;
            }
        });
        manager.setSpanCount(manager.getSpanCount());
    }
}
 
源代码14 项目: CoordinatorLayoutExample   文件: WrapperUtils.java
public static void onAttachedToRecyclerView(RecyclerView.Adapter innerAdapter, RecyclerView
        recyclerView, final SpanSizeCallback callback) {
    innerAdapter.onAttachedToRecyclerView(recyclerView);

    RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
    if (layoutManager instanceof GridLayoutManager) {
        final GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager;
        final GridLayoutManager.SpanSizeLookup spanSizeLookup = gridLayoutManager
                .getSpanSizeLookup();

        gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                return callback.getSpanSize(gridLayoutManager, spanSizeLookup, position);
            }
        });
        gridLayoutManager.setSpanCount(gridLayoutManager.getSpanCount());
    }
}
 
源代码15 项目: Android-RecyclerViewHelper   文件: HelperAdapter.java
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
    super.onAttachedToRecyclerView(recyclerView);

    itemAdapter.onAttachedToRecyclerView(recyclerView);

    RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
    if (layoutManager instanceof GridLayoutManager) {
        final GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager;
        final GridLayoutManager.SpanSizeLookup spanSizeLookup = gridLayoutManager.getSpanSizeLookup();

        gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                int viewType = getItemViewType(position);

                if (ViewType.TYPE_HEADER == viewType) {
                    return gridLayoutManager.getSpanCount();
                } else if (ViewType.TYPE_FOOTER == viewType) {
                    return gridLayoutManager.getSpanCount();
                } else if (ViewType.TYPE_LOADING == viewType) {
                    return gridLayoutManager.getSpanCount();
                } else if (ViewType.TYPE_ERROR == viewType) {
                    return gridLayoutManager.getSpanCount();
                } else if (ViewType.TYPE_EMPTY == viewType) {
                    return gridLayoutManager.getSpanCount();
                }
                if (spanSizeLookup != null) {
                    return spanSizeLookup.getSpanSize(position);
                }
                return 1;
            }
        });
        gridLayoutManager.setSpanCount(gridLayoutManager.getSpanCount());
    }
}
 
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
    mInnerAdapter.onAttachedToRecyclerView(recyclerView);
    //为了兼容GridLayout
    RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
    if (layoutManager instanceof GridLayoutManager) {
        final GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager;
        final GridLayoutManager.SpanSizeLookup spanSizeLookup = gridLayoutManager.getSpanSizeLookup();

        gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                int viewType = getItemViewType(position);
                if (mHeaderViews.get(viewType) != null) {
                    return gridLayoutManager.getSpanCount();
                } else if (mFooterViews.get(viewType) != null) {
                    return gridLayoutManager.getSpanCount();
                }
                if (spanSizeLookup != null)
                    return spanSizeLookup.getSpanSize(position);
                return 1;
            }
        });
        gridLayoutManager.setSpanCount(gridLayoutManager.getSpanCount());
    }

}
 
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
    mInnerAdapter.onAttachedToRecyclerView(recyclerView);
    //设置HeaderView的ViewHolder的缓存数量
    if (null != mHeaderDatas && !mHeaderDatas.isEmpty()) {
        for (HeaderData headerData : mHeaderDatas) {
            recyclerView.getRecycledViewPool().setMaxRecycledViews(headerData.getLayoutId(), headerData.getCacheSize());
        }
    }
    //为了兼容GridLayout
    RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
    if (layoutManager instanceof GridLayoutManager) {
        final GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager;
        final GridLayoutManager.SpanSizeLookup spanSizeLookup = gridLayoutManager.getSpanSizeLookup();

        gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                int viewType = getItemViewType(position);
                if (isHeaderViewPos(position)) {
                    return gridLayoutManager.getSpanCount();
                } else if (isFooterView(viewType)) {
                    return gridLayoutManager.getSpanCount();
                }
                if (spanSizeLookup != null)
                    return spanSizeLookup.getSpanSize(position);
                return 1;
            }
        });
        gridLayoutManager.setSpanCount(gridLayoutManager.getSpanCount());
    }

}
 
源代码18 项目: likequanmintv   文件: LoadMoreCommonAdapter.java
@Override
    public void onAttachedToRecyclerView(RecyclerView recyclerView)
    {
//        Log.d("LoadMoreCommonAdapter","onAttachedToRecyclerView");
        super.onAttachedToRecyclerView(recyclerView);
        final RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
        if (layoutManager instanceof GridLayoutManager)
        {
            final GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager;
            final GridLayoutManager.SpanSizeLookup spanSizeLookup = gridLayoutManager.getSpanSizeLookup();

            gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup()
            {
                @Override
                public int getSpanSize(int position)
                {
                    if (isShowLoadMore(position))
                    {
                        return gridLayoutManager.getSpanCount();
                    }
                    if (spanSizeLookup != null)
                    {
                        return spanSizeLookup.getSpanSize(position);
                    }
                    return 1;
                }
            });
            gridLayoutManager.setSpanCount(gridLayoutManager.getSpanCount());
        }
    }
 
源代码19 项目: aptoide-client   文件: LatestCommentsFragment.java
@Override
public void setLayoutManager(final RecyclerView recyclerView) {
    if (appView) {
        recyclerView.setLayoutManager(new LinearLayoutManager(recyclerView.getContext()));
    } else {
        bucketSize = AptoideUtils.UI.getEditorChoiceBucketSize();
        final GridLayoutManager gridLayoutManager = new GridLayoutManager(recyclerView.getContext(), bucketSize);
        gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {

                if (!(recyclerView.getAdapter() instanceof SpannableRecyclerAdapter)) {
                    throw new IllegalStateException("RecyclerView adapter must extend SpannableRecyclerAdapter");
                }

                int spanSize = ((SpannableRecyclerAdapter) recyclerView.getAdapter()).getSpanSize(position);
                if (spanSize >= ((GridLayoutManager) recyclerView.getLayoutManager()).getSpanCount()) {
                    return ((GridLayoutManager) recyclerView.getLayoutManager()).getSpanCount();
                } else {
                    return spanSize;
                }
            }
        });

        // we need to force the spanCount, or it will crash.
        // https://code.google.com/p/android/issues/detail?id=182400
        gridLayoutManager.setSpanCount(bucketSize);
        recyclerView.setLayoutManager(gridLayoutManager);
    }
}
 
源代码20 项目: PinCodePicker   文件: PinCodeRecyclerView.java
private void initView(Context context, AttributeSet attrs) {
    TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.PinCodeRecyclerViewWidget);
    pinCodeLength = typedArray.getInt(R.styleable.PinCodeRecyclerViewWidget_pin_code_length, 0);
    int filledOutDrawableId = typedArray.getResourceId(R.styleable.PinCodeRecyclerViewWidget_pin_code_filled_out_drawable, R.drawable.ic_pin_code_check);

    int currentAnimationResId = typedArray.getResourceId(R.styleable.PinCodeRecyclerViewWidget_pin_code_animation_current, R.animator.indicator_no_animator);
    Animator animationCurrent= AnimatorInflater.loadAnimator(context, currentAnimationResId);

    PinCodeType pinCodeType = PinCodeType.typeFromName(typedArray.getString(R.styleable.PinCodeRecyclerViewWidget_pin_code_type));

    setHasFixedSize(true);

    layoutManager = new GridLayoutManager(context, 1);
    layoutManager.setSpanCount(pinCodeLength);

    setLayoutManager(layoutManager);

    pinCodeAdapter = new PinCodeAdapter(getResources(), pinCodeLength, pinCodeType, filledOutDrawableId);
    setAdapter(pinCodeAdapter);

    pinCodeAdapter.setCurrentPinCodeAnimation(animationCurrent);

    addItemDecoration(new RecyclerViewInsetDecoration(context.getResources(), R.dimen.pin_code_view_inset_default));
    setItemAnimator(new DefaultItemAnimator());
}