FormLayoutManager -- 表格格子数过多时,第一次加载卡顿问题

FormLayoutManager首页,里面有github地址

前言

由一位网友反馈的问题,我意识到我的库,有一点缺点。由于我的库为了让每个格子都实现复用,所以第一次加载数据的时候,我必须把所有格子的位置先算出来(后面刷新数据,只要格子数不变的话,刷新数据只会刷当前界面显示的格子),所以当表格的格子真的过多的时候,计算格子位置的算法是会有点耗时。这时就会出现,我明明调了adapter的刷新数据,结果界面会卡住一下,表格要等一会儿才显示出来。不过在该库最新版本4.0已经解决了,下面就说一下解决的过程。

 

解决方案及应用

其实解决方法很简单,就是把计算格子位置的算法放到子线程就行了。不过放在子线程的话,就可能不那么容易判断表格什么时候第一次加载完。一般的场景是,我们调用的第一次adapter数据的刷新后,就把加载对话框关掉,但这是把对话框关掉,其实表格还没显示出来的。

所以我在FormLayoutManager里提供了一个setHandler,可以参考HFormActivity界面

       mProgressDialog.show();
       layoutManager.setHandler(new Handler(){
            @Override
            public void handleMessage(Message msg) {
                if (msg.what == FormLayoutManager.FIRST_INIT_FINISH) {
                    mProgressDialog.dismiss();
                }
            }
        });

设置自己的handler,判断msg.what的类型是FIRST_INIT_FINISH,就代表表格基本加载完。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值