下面列出了怎么用android.support.v7.widget.GridLayoutManager的API类实例代码及写法,或者点击链接到github查看源代码。
public void setPageDatas(int rowCount, int spanCount, @NonNull List<T> datas, @NonNull PageMenuViewHolderCreator creator) {
if (datas == null) {
datas = new ArrayList<>();
}
mRowCount = rowCount;
mSpanCount = spanCount;
if (mRowCount == 0 || mSpanCount == 0) {
return;
}
int pageSize = mRowCount * mSpanCount;
int pageCount = (int) Math.ceil(datas.size() * 1.0 / pageSize);
List<View> viewList = new ArrayList<>();
for (int index = 0; index < pageCount; index++) {
RecyclerView recyclerView = new RecyclerView(this.getContext());
recyclerView.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
recyclerView.setLayoutManager(new GridLayoutManager(this.getContext(), mSpanCount));
EntranceAdapter<T> entranceAdapter = new EntranceAdapter<>(creator, datas, index, pageSize);
recyclerView.setAdapter(entranceAdapter);
viewList.add(recyclerView);
}
PageViewPagerAdapter adapter = new PageViewPagerAdapter(viewList);
mViewPager.setAdapter(adapter);
}
public MGridLayoutManager(Context context, final int spanCount, final BaseLoadMoreRecyclerAdapter mAdapter) {
super(context, spanCount);
setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch (mAdapter.getItemViewType(position)) {
case BaseLoadMoreRecyclerAdapter.TYPE_FOOTER:
return spanCount;
case BaseLoadMoreRecyclerAdapter.TYPE_ITEM:
return 1;
default:
return -1;
}
}
});
}
private boolean isLastColum(RecyclerView parent, int pos, int spanCount,
int childCount) {
LayoutManager layoutManager = parent.getLayoutManager();
if (layoutManager instanceof GridLayoutManager) {
if ((pos + 1) % spanCount == 0)
// 如果是最后一列,则不需要绘制右边
{
return true;
}
} else if (layoutManager instanceof StaggeredGridLayoutManager) {
int orientation = ((StaggeredGridLayoutManager) layoutManager)
.getOrientation();
if (orientation == StaggeredGridLayoutManager.VERTICAL) {
if ((pos + 1) % spanCount == 0)// 如果是最后一列,则不需要绘制右边
{
return true;
}
} else {
childCount = childCount - childCount % spanCount;
if (pos >= childCount)// 如果是最后一列,则不需要绘制右边
return true;
}
}
return false;
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_album);
mToolbar = findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
mTvMessage = findViewById(R.id.tv_message);
RecyclerView recyclerView = findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
Divider divider = new Api21ItemDivider(Color.TRANSPARENT, 10, 10);
recyclerView.addItemDecoration(divider);
mAdapter = new Adapter(this, new OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
previewAlbum(position);
}
});
recyclerView.setAdapter(mAdapter);
}
private void initView() {
mIntegers.add(100);
mIntegers.add(50);
mIntegers.add(20);
mIntegers.add(10);
mIntegers.add(5);
final List<String> mData = new ArrayList<>();
for (int i = 0; i < chargetext.length; i++) {
mData.add(chargetext[i]);
}
mAdapter = new ChargeAmountAdapter(this, mData);
mRecyclerview.setAdapter(mAdapter);
mRecyclerview.setLayoutManager(new GridLayoutManager(this, 2));
mAdapter.setOnItemClickListener(new BaseAdapter.OnItemClickListener() {
@Override
public void onClick(View v, int position) {
mAdapter.setSelectPosition(position);
}
});
}
@Override
public void onImagesLoaded(List<ImageFolder> imageFolders) {
this.mImageFolders = imageFolders;
imagePicker.setImageFolders(imageFolders);
if (imageFolders.size() == 0) {
// mImageGridAdapter.refreshData(null);
mRecyclerAdapter.refreshData(null);
} else {
// mImageGridAdapter.refreshData(imageFolders.get(0).images);
mRecyclerAdapter.refreshData(imageFolders.get(0).images);
}
// mImageGridAdapter.setOnImageItemClickListener(this);
mRecyclerAdapter.setOnImageItemClickListener(this);
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3));
mRecyclerView.addItemDecoration(new GridSpacingItemDecoration(3, Utils.dp2px(this, 2), false));
mRecyclerView.setAdapter(mRecyclerAdapter);
mImageFolderAdapter.refreshData(imageFolders);
}
private void activateEndlessScroll(RecyclerView recyclerView, GridLayoutManager manager) {
RxRecyclerView.scrollEvents(recyclerView)
.subscribe(scrollEvent -> {
visibleItemCount = recyclerView.getChildCount();
totalItemCount = manager.getItemCount();
firstVisibleItem = manager.findFirstVisibleItemPosition();
if (loading) {
if (totalItemCount > previousTotal) {
loading = false;
previousTotal = totalItemCount;
}
}
if (!loading && (totalItemCount - visibleItemCount)
<= (firstVisibleItem + visibleThreshold)) {
pageNum++;
presenter.loadMoviesList(getContext(), pageNum, false);
loading = true;
}
});
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
LayoutManager layoutManager = recyclerView.getLayoutManager();
if (layoutManager instanceof GridLayoutManager) {
GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager;
final int spanCount = gridLayoutManager.getSpanCount();
gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
// 如果当前是footer的位置,那么该item占据一行的个单元格,正常情况下占据1个单元格
if (getItemViewType(position) == FOOTER_TYPE) {
return spanCount;
} else if (isRefreshHeader(position) || getItemViewType(position) == getHeaderTypeByPosition(position - 1)) {
return spanCount;
} else {
return 1;
}
}
});
}
mAdapter.onAttachedToRecyclerView(recyclerView);
}
@Override
public void onBindView(@Nullable Bundle savedInstanceState, @NonNull View view) {
RestClient.builder()
.url("api/youlike")
.loader(getContext())
.success(new ISuccess() {
@Override
public void onSuccess(String response) {
final GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(),2);
mTabReclclerView.setLayoutManager(gridLayoutManager);
final List<MultipleItemEntity> data = new ShopCartLikeConverter().setJsonData(response).convert();
final ShopCartLikeAdapter likeAdapter = new ShopCartLikeAdapter(data);
mTabReclclerView.setAdapter(likeAdapter);
mTabReclclerView.addOnItemTouchListener(IndexItemClickListener.create(IndexTabDelegate.this));
}
})
.build()
.get();
}
/**
* 获取第一条展示的位置
*
* @return
*/
private int getFirstVisiblePosition() {
int position;
if (getLayoutManager() instanceof LinearLayoutManager) {
position = ((LinearLayoutManager) getLayoutManager()).findFirstVisibleItemPosition();
} else if (getLayoutManager() instanceof GridLayoutManager) {
position = ((GridLayoutManager) getLayoutManager()).findFirstVisibleItemPosition();
} else if (getLayoutManager() instanceof StaggeredGridLayoutManager) {
StaggeredGridLayoutManager layoutManager = (StaggeredGridLayoutManager) getLayoutManager();
int[] lastPositions = layoutManager.findFirstVisibleItemPositions(new int[layoutManager.getSpanCount()]);
position = getMinPositions(lastPositions);
} else {
position = 0;
}
return position;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
mRecyclerView = (RecyclerView) view;
GridLayoutManager layoutManager = new GridLayoutManager(view.getContext(), span);
mRecyclerView.setLayoutManager(layoutManager);
adapter = new GridAdapter(list);
mRecyclerView.setAdapter(adapter);
DividerItemDecoration itemDecoration = new DividerItemDecoration();
itemDecoration.setDividerLookup(new AgileDividerLookup());
mRecyclerView.addItemDecoration(itemDecoration);
if (type == MainActivity.TYPE_AGILE) {
layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return span / adapter.getItemViewType(position);
}
});
}
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_album);
mToolbar = findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
mTvMessage = findViewById(R.id.tv_message);
RecyclerView recyclerView = findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
Divider divider = new Api21ItemDivider(Color.TRANSPARENT, 10, 10);
recyclerView.addItemDecoration(divider);
mAdapter = new Adapter(this, new OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
previewVideo(position);
}
});
recyclerView.setAdapter(mAdapter);
}
/**
* if layout manager do not have this method , will return 0
*
* @return
*/
public int findFirstVisibleItemPosition() {
LayoutManager manager = getLayoutManager();
int firstVisibleItems = 0;
if (manager instanceof LinearLayoutManager) {
firstVisibleItems = ((LinearLayoutManager) manager).findFirstVisibleItemPosition();
} else if (manager instanceof GridLayoutManager) {
firstVisibleItems = ((GridLayoutManager) manager).findFirstVisibleItemPosition();
} else if (manager instanceof StaggeredGridLayoutManager) {
StaggeredGridLayoutManager sg = ((StaggeredGridLayoutManager) manager);
int[] items = new int[sg.getSpanCount()];
items = ((StaggeredGridLayoutManager) manager).findFirstVisibleItemPositions(items);
firstVisibleItems = items[0];
}
return firstVisibleItems;
}
private void initView() {
qRcode = (ImageView) findViewById(R.id.QRcode);
qRcode.setOnClickListener(this);
config = (ImageView) findViewById(R.id.config);
config.setOnClickListener(this);
title = (RelativeLayout) findViewById(R.id.title);
recyclerView = (RecyclerView) findViewById(R.id.vod_main_recycler);
layoutManager = new GridLayoutManager(this, 2);
layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
if (position == 0) {
return layoutManager.getSpanCount();
} else {
return 1;
}
}
});
recyclerView.setLayoutManager(layoutManager);
}
private void init() {
Bundle bundle = getArguments();
pageId = bundle.getInt("pageId");
iconsGetter = (IconsGetter) bundle.getSerializable("iconsGetter");
gridItemMode = bundle.getInt("mode", IconAdapter.MODE_ICON);
RecyclerView recyclerView = (RecyclerView) contentView.findViewById(R.id.recycler_view);
int[] gridNumAndWidth = calculateGridNumAndWidth();
recyclerView.setLayoutManager(new GridLayoutManager(getContext(), gridNumAndWidth[0]));
iconAdapter = new IconAdapter(getContext(), gridNumAndWidth[1]);
iconAdapter.setMode(gridItemMode);
iconAdapter.setOnItemClickListener(new IconAdapter.OnItemClickListener() {
@Override
public void onClick(int pos, IconBean bean) {
IconDialog.newInstance(bean, ExtraUtil.isFromLauncherPick(getActivity().getIntent()))
.show(getFragmentManager(), "iconDialog");
}
});
recyclerView.setAdapter(iconAdapter);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.inject(this);
coverItems = new ArrayList<>();
coverItems.add(new CoverItem("Raisa", R.drawable.coveralbum_raisa));
coverItems.add(new CoverItem("Tulus", R.drawable.coveralbum_tulus));
coverItems.add(new CoverItem("D'Masive", R.drawable.coveralbum_dmasive));
coverItems.add(new CoverItem("Skrillex", R.drawable.coveralbum_skrillex));
coverItems.add(new CoverItem("Angger Dimas", R.drawable.coveralbum_angger));
adapter = new CoverAdapter(this, coverItems);
GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 2);
recyclerView.setLayoutManager(gridLayoutManager);
recyclerView.setAdapter(adapter);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Context context = parent.getContext();
final LayoutInflater inflater = LayoutInflater.from(context);
switch (viewType) {
case HEADER:
final View numpadView = inflater.inflate(app.outlay.R.layout.recycler_numpad, parent, false);
GridLayoutManager.LayoutParams params = (GridLayoutManager.LayoutParams) numpadView.getLayoutParams();
params.height = parent.getMeasuredHeight() - (context.getResources().getDimensionPixelSize(app.outlay.R.dimen.category_item_height) * 2);
final NumpadViewHolder viewHolder = new NumpadViewHolder(numpadView);
return viewHolder;
default:
final View catView = inflater.inflate(app.outlay.R.layout.item_category, parent, false);
final CategoryViewHolder categoryViewHolder = new CategoryViewHolder(catView);
return categoryViewHolder;
}
}
@Override
public void onAttachedToRecyclerView(final RecyclerView recyclerView) {
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) {
WrapperAdapter wrapperAdapter = (WrapperAdapter) recyclerView.getAdapter();
if (isFullSpanType(wrapperAdapter.getItemViewType(position))) {
return gridLayoutManager.getSpanCount();
}
return 1;
}
});
}
}
@Override
protected RecyclerView.LayoutManager createLayoutManager() {
GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 2);
proteinAdapter.setSpanCount(2);
gridLayoutManager.setSpanSizeLookup(proteinAdapter.getSpanSizeLookup());
return gridLayoutManager;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gallery);
application = MeizhiApplication.from(this);
DisplayMetrics metrics = getResources().getDisplayMetrics();
int actionBarHeight = getSupportActionBar().getHeight();
int swipeEndTarget = actionBarHeight + (int) (DEFAULT_CIRCLE_TARGET * metrics.density);
refresh = (SwipeRefreshLayout) findViewById(R.id.refresh);
refresh.setColorSchemeResources(R.color.accent);
refresh.setProgressViewOffset(false, actionBarHeight, swipeEndTarget);
refresh.setOnRefreshListener(this);
adapter = new GalleryAdapter(this, this);
layoutManager = new GridLayoutManager(this, getSpanCount());
layoutManager.setSpanSizeLookup(new HeaderSpanSizeLookup(layoutManager));
albums = (ObservableRecyclerView) findViewById(R.id.albums);
albums.setHasFixedSize(true);
albums.setLayoutManager(layoutManager);
albums.setAdapter(adapter);
albums.setScrollViewCallbacks(this);
}
private int getSpanCount(RecyclerView parent) {
// 列数
int spanCount = -1;
RecyclerView.LayoutManager layoutManager = parent.getLayoutManager();
if (layoutManager instanceof GridLayoutManager) {
spanCount = ((GridLayoutManager) layoutManager).getSpanCount();
} else if (layoutManager instanceof StaggeredGridLayoutManager) {
spanCount = ((StaggeredGridLayoutManager) layoutManager)
.getSpanCount();
}
return spanCount;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
setToolbar(toolbar);
setDisplayHomeAsUpEnabled(true);
getActivity().setTitle(getString(app.outlay.R.string.caption_categories));
GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(), 4);
categoriesGrid.setLayoutManager(gridLayoutManager);
adapter = new CategoriesDraggableGridAdapter(getOutlayTheme());
adapter.setDragListener(this);
adapter.setOnCategoryClickListener(c -> Navigator.goToCategoryDetails(getActivity(), c.getId()));
categoriesGrid.setAdapter(adapter);
ItemTouchHelper.Callback callback = new SimpleItemTouchHelperCallback(adapter);
mItemTouchHelper = new ItemTouchHelper(callback);
mItemTouchHelper.attachToRecyclerView(categoriesGrid);
fab.setImageDrawable(getResourceHelper().getFabIcon(app.outlay.R.string.ic_material_add));
fab.setOnClickListener(v -> Navigator.goToCategoryDetails(getActivity(), null));
Drawable noCategoryIcon = IconUtils.getIconMaterialIcon(
getContext(),
MaterialDesignIconic.Icon.gmi_label,
getOutlayTheme().inactiveIconColor,
app.outlay.R.dimen.icon_no_results,
16
);
noContentImage.setImageDrawable(noCategoryIcon);
}
public LocalFragmentPresenter(RecyclerView mRecyclerView, PanelRecycleAdapter mPanelRecycleAdapter, ISelectData mISelectData, Context context) {
super(mRecyclerView, mPanelRecycleAdapter, mISelectData, context);
doTrans();
LayoutManager manager = mRecyclerView.getLayoutManager();
if (manager instanceof GridLayoutManager) {
this.mGridLayoutManager = (GridLayoutManager) manager;
}
}
public void setLayoutManagerAndView(int mode){
if(mode==1){
GridLayoutManager gridLayoutManager=new GridLayoutManager(activity,4);
recyclerView.setLayoutManager(gridLayoutManager);
this.mode=1;
}else{
LinearLayoutManager linearLayoutManager=new LinearLayoutManager(activity);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(linearLayoutManager);
this.mode=0;
}
notifyDataSetChanged();
}
@NonNull @Override protected RecyclerView.LayoutManager getRecyclerViewLayoutManager() {
GridLayoutManager layoutManager = new GridLayoutManager(getContext(), 2);
layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return (mAdapter.getFullDatas().get(position) instanceof SiteItem) ? 1 : 2;
}
});
return layoutManager;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sponsor_try);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
recyclerView= (RecyclerView) findViewById(R.id.list);
recyclerView.setLayoutManager(new GridLayoutManager(this, 2));
adapter=new SponsorAdapter(this);
recyclerView.setAdapter(adapter);
progressBar= (ProgressBar) findViewById(R.id.progress);
getData();
}
private void loadRecyclerViewMenuItem() {
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.ry_menu_item);
GridLayoutManager layoutManager = new GridLayoutManager(this, 1);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setFocusable(false);
mMetroViewBorderImpl.attachTo(recyclerView);
createOptionItemData(recyclerView, R.layout.detail_menu_item);
}
private int getSpanCount(RecyclerView parent) {
int spanCount = -1;
RecyclerView.LayoutManager layoutManager = parent.getLayoutManager();
if (layoutManager instanceof GridLayoutManager) {
spanCount = ((GridLayoutManager) layoutManager).getSpanCount();
} else if (layoutManager instanceof StaggeredGridLayoutManager) {
spanCount = ((StaggeredGridLayoutManager) layoutManager).getSpanCount();
}
return spanCount;
}
public X8LocalFragmentPresenter(RecyclerView mRecyclerView, X8sPanelRecycleAdapter mPanelRecycleAdapter, ISelectData mISelectData, Context context) {
super(mRecyclerView, mPanelRecycleAdapter, mISelectData, context, false);
doTrans();
LayoutManager manager = mRecyclerView.getLayoutManager();
if (manager instanceof GridLayoutManager) {
this.mGridLayoutManager = (GridLayoutManager) manager;
}
registerReciver();
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main_photo_edit_emoji, container, false);
emojiRecyclerView = (RecyclerView) rootView.findViewById(R.id.fragment_main_photo_edit_emoji_rv);
emojiRecyclerView.setHasFixedSize(true);
emojiRecyclerView.setLayoutManager(new GridLayoutManager(photoEditorActivity, 4));
EmojiAdapter adapter = new EmojiAdapter(photoEditorActivity, emojiIds);
adapter.setOnEmojiClickListener(this);
emojiRecyclerView.setAdapter(adapter);
return rootView;
}