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,就代表表格基本加载完。