使用template method模式简化android列表页面

场景:展现列表数据,点击后显示明细,这种列表页面是web开发和android开发经常会碰到的页面,在android应用中,这些页面有一些共性的需求:

1.       分页处理:每次查询只查询几条几率,通过滚屏或者最下方的提示按钮增量查询第二页

2.       异步数据加载,网络查询这种操作,可能由于网络原因,超时报异常。所以:第一次查询和以后的增量查询都需要异步处理

3.       点击后查询明细数据

类似OA的系统中,这类页面会非常多,而这部分代码基本是拷贝粘贴,通过使用template method模式,可以简化此类页面的开发

算法:template method是保持算法骨架不变,使具体的算法发生变化

这里我们建1个抽象类,实现算法骨架:

1.       加载页面

2.       计算屏幕大小,确定分页查询的条目数

3.       得到具体的listView

4.       打开进度条后异步查询

5.       查询后在Hander中处理

5.1   得到具体的Adapter

5.2   Adapter绑定ListView并实现增量查询

5.3   注册ListView的条目单击、点击变色等事件

上面的每个步骤都是抽象方法,在继承类中实现算法的变化

分页查询:java web开发中,依托Hibernate或者jdbc,分页查询有比较完整的解决方法。我们可以充分利用已有的分页查询,android提交给后台的数据包括开始记录数据,查询结束记录数。记录的开始和结束条目需要在滚屏或者点击增量查询按钮时获得,在android客户端的处理推荐几篇博客,很详细,这里就不再说了。

http://www.oschina.net/question/54100_31819

http://blog.csdn.net/cjjky/article/details/6898871

http://blog.csdn.net/wangkuifeng0118/article/details/7252423

         其他:在实际应用中,由于明细查询弹出数据框显示,没有新开activity,所以抽象类中封装了附件是否已下载判断、附件下载的动态列表。项目中使用httpClientsession在网络中断后可能丢失,像web程序一样,seesion丢失后需要重新登录,重新查询,否则不能正确显示和用户相关数据,这个也可封装在抽象类中。极大的简化了开发后续页面的开发,而且维护方便。

posted on 2012-11-09 17:30  lodestar  阅读(454)  评论(0编辑  收藏  举报

导航