在Android中列出具有多个列表ui项目的百万+记录

时间:2014-06-23 19:17:28

标签: android performance layout android-listview android-sqlite

在我们的某个应用程序中,我们必须列出存储在内部sqlite数据库中的大约一百万条记录,并将它们显示在由多个列表视图UI布局分隔的列表视图中。

例如,列表如下所示:

Area 1   
    Location A  
        Person 1  
        Person 2  
        Person 3   
    Location B   
        Person 4  
        Person 5
Area 2   
    Location C  
        Person 6  
        Person 7  
        Person 8   
    Location D   
        Person 9  
        Person 10

依旧......

现在,这些地区有数百个,地点数以千计,人数以百万计。区域,位置和人是附加了多个属性的模型(表)。我将使用3种不同的列表项目布局区域,位置和&人员记录。

我在我的实现中使用了Endless Adapter from CWAC和自定义BaseAdapter。我正在抓取并存储区域和ArrayList中的位置和我已将Person记录的提取委托给Endless Adapter。它按预期工作,但随着人员的记录数量不断增长(这在应用程序中是正常的),列表视图生成逐渐变慢。除此之外,还有过滤器可用于过滤区域,位置和位置。人。因此,对于每个过滤器,获取区域,位置以及人员的查询都会发生变化。我们还在应用程序中具有搜索功能,用户可以在其中搜索特定区域,位置或人员,列表视图会相应地刷新数据。

我不允许显示实际记录和源代码,这些记录和源代码有助于以更好的方式理解复杂数据,抱歉!

有没有更好的方法来改善用户体验并节省用户的时间?任何帮助将非常感谢。提前谢谢。

@ Squonk - 用户实际上可以在任何给定时间点编辑人员记录,例如更改他们的位置,姓名,出生日期等。用户还可以更改他们想要追踪的位置。例如,用户可以存储纽约和纽约。伦敦为他/她的偏好,即使该应用程序有多个其他位置供他/她选择。一旦用户选择了位置,他/她就能看到这些位置上的人员。

@ tophyr - EndlessAdapter帮助我一次获取30个记录,用于给定的Area&我把它留在内存中显示的位置。一旦用户滚动并到达最后一条记录,EndlessAdapter将刷新并且内存中的数据也会刷新。一旦没有Person记录,我就改变查询以获取下一个Location,EndlessAdapter开始根据新查询获取Person记录。

@ CommonsWare - 是的,数百万条记录没有存储在设备的RAM中,但是必须对它们进行搜索,过滤并向用户显示,为此,我使用了您真棒的库。我可能会以错误的方式实施它,这就是为什么我寻求帮助来改进它。

0 个答案:

没有答案