首页 > 解决方案 > 网格布局管理器

问题描述

我正在开发一个 android 应用程序,它有一个带有两个视图持有者的 recyclerView 适配器,当视图类型为旅行者设置跨度计数 1 并且视图类型为文件夹设置跨度计数 2 但始终有 1 跨度计数时,我尝试制作这是网格布局管理器我用

    GridLayoutManager gridLayout = new GridLayoutManager(this, 2);
    gridLayout.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
        @Override
        public int getSpanSize(int position) {
            if (adapter.getItemViewType(position) == TYPE_FOLDER)
                return 2;
            else
                return 1;
        }

    });
    recyclerView.setLayoutManager(gridLayout);

这是在适配器中获取视图类型

    @Override
public int getItemViewType(int position) {

    Object obj = data.get(position);
    if (obj instanceof Traveler)
        return TYPE_TRAVELER;
    else if (obj instanceof MainItem)
        return TYPE_FOLDER;

    throw new IllegalArgumentException("Invalid position " + position);
}

这个应用程序的屏幕截图

https://i.imgur.com/bPRbCyA.png “app_screenshot”

标签: javaandroidandroid-recyclerviewgridlayoutmanager

解决方案


推荐阅读