1、切换浏览方式的逻辑改变
原本:先回到上一层然后再回到当前这一层
优点:上层调用方面的代码复用率高
缺点:但是较下层的数据管理层方面的实现逻辑较复杂,较难维护(估计只有我能看懂-_-)
现在:直接使用当前的数据更换view来显示
优点:业务逻辑容易看懂,数据层实现简单化了,容易维护
缺点:上层侵犯了一些业务层的逻辑,或者说拖过来包办了
重构之后的逻辑
(1)通过上下调用数据层的onfinish重新刷新view来显示,不能越过是因为要使用原来这条链的对象
(2)在enterDIR要记住当前的view模式以便在enterParentDIR时判断不同则要改变currentPage 和 position
(3)调用onfinish时因为类似enterDIR,所以得把position重置为0
(4)区分几个页面的逻辑:topdata Resource 、state为显示设备状态、state为显示资源状态
2、上下翻页或者切换按钮到gridview或者类型按钮到gridview的逻辑改变
(1)在grid的onslected函数中把localdatabrowser的focuspisition和pisition一致之后则不会按两下才翻页,因为之前的fucuspisition更新刚好慢了一拍
(2)在gridview切换到类型按钮之前需要两次都是因为position在selected改变了,先于processRightKeyDown发生了,所以才使得focuspisitonnow多加了1
然后在processkeyright完了之后再减少1。
现在是怎么改变的呢?
首先算一下各种情况出现的出现的次数:
<1>在切换list到grid、点击进入下一层文件夹、切换按钮到grid、类型按钮到grid 均需要按左两次才能到类型按钮
<2>从0-〉6或者6-〉0也需要两次
<3>在gridview中其余移动的需要1次
针对<1>、<2>进行处理:
切换list到grid、点击进入下一层文件夹:在hander里面更新UI数据的时候令positionFocusNow=0;
切换按钮到grid、类型按钮到grid:分别在processDownKeyDown、processRightKeyDown 令positionFocusNow=0;
令为0的好处有使得:在类型按钮不管按多少次都会重置为0,有时候从类型按钮回到grid是不一定会触发onselected的。所以没触发的时候因为重置为0了,得到理想结果。
触发的话,就要判断当前的positionFocusNow,pisition是否都为0;是的话则不用positionFocusNow+1了。
从0-〉6或者6-〉0:判断这两种情况,分别使得positionFocusNow=pisition
总结:分支很多的情况,一定要画图或者罗列出所有的情况才下手编程,否则则是浪费时间。