Android GridLayoutManager.setSpanSizeLookup的使用介绍

简介: Android GridLayoutManager.setSpanSizeLookup的使用介绍

前言:

使用setSpanSizeLookup后的效果图如下

对应的Activity代码如下,setSpanSizeLookup的具体解释已经在代码中给出:

public class GrideActivity extends AppCompatActivity implements GrideAdapter.OnItemClickListener {
    private ActivityGrideBinding binding;
    private GrideAdapter grideAdapter;
    private List<GrideModel> grideModels = new ArrayList<>();
    private static final String TAG = "GrideActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = DataBindingUtil.setContentView(this, R.layout.activity_gride);
        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3, RecyclerView.VERTICAL, false);
        binding.rvList.setLayoutManager(gridLayoutManager);
        for (int i = 0; i < 20; i++) {
            grideModels.add(new GrideModel("https://tse3-mm.cn.bing.net/th/id/OIP-C.ezHUw2d5cvio6idA9t5zCwHaEK?w=302&h=180&c=7&r=0&o=5&dpr=1.3&pid=1.7", "Android开发"));
        }
        grideAdapter = new GrideAdapter(grideModels);
        grideAdapter.setOnItemClickListener(this);
        gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {//列表项的占位规则
                Log.i(TAG, "getSpanSize,position:" + position);
                //返回该item所占的份数 那么下标为4的item占三份,那么则占据整个屏幕的宽。
                //注意一个item所占的份数,不能超过GridLayoutManager的spanCount
                return (1 + position) % 7 == 0 ? 3 : 1;
            }
        });
        binding.rvList.setAdapter(grideAdapter);
    }
    @Override
    public void onItemClick(int position) {
        ToastUtils.showShort(position);
    }
}


目录
相关文章
N..
|
安全 API 开发工具
如何升级Flutter
如何升级Flutter
N..
1357 1
人工智能 API 开发工具
419 1
|
8月前
|
移动开发 UED
阿里云号码认证服务介绍、融合认证收费价格及号码认证使用场景说明
阿里云号码认证服务支持一键登录、短信/图形/融合认证,直连运营商实现无感验证,优化注册登录流程。提供多种套餐:短信认证100次3.99元/年,1万次480元/年;号码认证100万次2.9万元/年;融合认证更享优惠。适用于APP、H5等场景,提升用户体验。
|
算法 Java Android开发
Android rxjava和LiveData中的内存泄漏
Android rxjava和LiveData中的内存泄漏
540 0
|
存储 数据可视化 安全
最新榜单!国内免费好用的OA协同软件前十名
在现代企业管理中,OA(Office Automation)协同软件已成为提升工作效率、简化沟通流程的重要工具。本文将重点评测国内十款高性价比的OA协同软件,涵盖任务管理、文件共享、审批流程、日程安排等功能,帮助企业和团队轻松找到理想的解决方案。
4985 6
|
Android开发
Android代码混淆
Android代码混淆
696 0
|
数据处理 索引 Python
深入了解pandas中的loc和iloc
深入了解pandas中的loc和iloc
747 0
|
Shell Linux 网络安全
git生成SSH秘钥
git生成SSH秘钥
1242 2
|
SQL 存储 安全
开发实战(6)--对fofa收集的漏洞资产使用poc进行批量验证
主要还是围绕渗透测试的流程进行开发,一般在信息收集后,在渗透测试后,在发现通用型漏洞时,我们为了节省时间,可以通过写批量脚本来信息收集,然后使用poc来进行批量验证,本篇是一个编写批量验证python的示例.
|
Dart 前端开发 JavaScript
Flutter for Web:跨平台移动与Web开发的新篇章
Flutter for Web是Google的开源UI工具包Flutter的延伸,用于构建高性能、高保真的跨平台应用,包括Web。它基于Dart语言和Flutter的核心框架,利用Skia渲染引擎通过WebAssembly在Web上运行。开发流程包括安装SDK、创建项目、编写Dart代码和部署。性能优化涉及减少渲染开销、代码压缩等。与传统Web框架相比,Flutter for Web在开发效率和性能上有优势,但兼容性和生态系统尚待完善。
755 0