RecyclerView,数据库绑定和内存设计

时间:2017-05-13 13:37:54

标签: android database sqlite

我是Android开发人员的新手,并且第一次尝试在RecyclerView和SQLite数据库之间实现数据绑定。现在我一直在搜索关于该主题的示例和教程,发现的信息少于我的预期。

我发现的一些解决方案,例如:Display SQLite data in RecyclerView,似乎总是向数据库查询所有数据,将其递归存储到List中,然后传递给RecyclerView 。适配器。然后,适配器类通过引用List<Item>中的项目来浏览项目。

现在提出实际问题:此解决方案是否智能?我是一个业余爱好程序员,因此我远不是数据库和/或内存设计的专家。这个解决方案让我很头疼,因为查询数据库中的所有项目并将它们存储在一个数组中似乎不仅打败了查询SQLite数据库的优势,而且似乎还有污染内存的风险(从而掉线)性能)。因此:是否有更好的解决方案将数据库数据绑定到RecyclerView,或者Array<Item> - 查询全解 - 是否正常用于此目的?

1 个答案:

答案 0 :(得分:0)

我想,你正在寻找分页。分页用于有限地从数据库中检索结果,此处用于SQLLite(请注意此处的限制)。例如:

SELECT *
FROM MyTable
WHERE SomeColumn > LastValue
ORDER BY SomeColumn
LIMIT 100

Efficient paging in SQLite with millions of records

  

什么是分页?

     

如果您有一个允许用户浏览行中的表单   数据库表,如果该表有数百甚至数百,你会怎么做   成千上万行?显示所有这些行不是一个好主意   在单一形式中,您应该将数据库输出拆分为   更易于管理的块或“页面”。你必须做两件事:

     
      
  • 确定每个页面中可包含的最大数据库行数。您可以对此值进行硬编码,或
  •   
  • 您可以在变量中定义它,以便可以更改值   运行时。
  •   
     

然后,您需要通知用户其他“页面”可用,并提供一种机制,用户可以选择不同的   “页面”的详细信息。

然后,每当有新数据出现时,请拨打适配器上的notifyDatasetChanged()进行刷新。

分页参考:https://www.tonymarston.net/php-mysql/pagination.html

相关问题