android 本地数据库数据超过10000条排序且一次性加载解决方案

问题描述

本地数据库数据超过10000要求按首字母排序,且一次性加载到界面中,该如何处理,类似与系统的通讯录,一次性加载回来。

解决方案

 1)排序

    排序的实现有两种方式

  •     对象排序
    这种方式根据实现对应的Comparable的compareTo接口实现,然后根据Collection.sort方法进行排序,这种方式在数据量比较少的情况下是可以实现的,但如果数据量过大这种方式会非常慢。
  • 数据库排序

     根据数据库的order by 来实现排序,速度非常

  2)UI 显示

       这块非常重要,数据库查询其实非常快,10000条数据大概在400ms左右,远不会超过1s,但是查询到结果后怎么添加到界面上,因为数据量大,基数大,期间任何的转换都是性能的消耗。这里怎么做列表的设计?

当然列表显示控件还是ListView,但adpater不能使用BaseAdapter,必须使用CursorAdapter,好处在于我们查询数据的返回结果是一个cursor我们不需要做任何的转换直接填充到界面上了。

     有些同学喜欢在查询到数据后轮训cursor将其转换成map类型的list或者对象list再填充到界面,这里的轮训就会花费特别多的时间。

总结

     这里简单介绍了本地数据过多的情况下如何查询显示,当然数据量小的情况下可以不用做这种类似的处理。

相关推荐