首页 > 解决方案 > Android过滤项目列表

问题描述

在 Android 应用程序中,我有一个由名称和类别组成的项目列表。项目和类别存储在 Android 的 SQLite 数据库中。

class Item{
    Long id;
    String name;
    Category category;
}

class Category{
    Long id;
    String name;
}

如何以正确的方式进行过滤?

谢谢

标签: javaandroidlist

解决方案


这不是一个简单的问题。所有开发人员的做法都不同。我建议几件事:

  1. 仅在数据库上进行一次选择,当用户编写前 1 个或 2 个字符或选择类别时。
  2. 记住从数据库列表中选择。让我们将其命名为 - originalList。可见列表保留在过滤列表等其他对象上。
  3. 每次都使用一些东西来避免过滤。如果您知道什么是反应式编程,您可以使用它的功能。如果您想以老式的方式进行操作,例如,您可以创建一个过滤任务/作业,当新的过滤顺序出现时,该任务/作业将被取消。这样,您总是有 0 或 1 个正在进行的过滤。
  4. 如果您的查询是由一项任务/作业处理的,那么过滤需要多少数据并不重要。如果没有为类别或名称设置任何内容,它还必须能够使用空属性。
  5. 当用户添加新要求时 - 过滤过滤列表进行优化。
  6. 请记住,当您清除字母时 - 列表也必须更改。这次您别无选择,必须过滤 originalList 或在数据库上进行选择。

但这是最复杂的方式,当项目列表可能非常大时使用。否则,您可以简单地从 SQLite 数据库中的表中选择所有对象作为原始列表,然后在 Java 代码中对其进行处理。

这样做的方式取决于环境,所以项目的数量、列的数量、名称的长度等。试着找到一种适合旅游情况的方式——我敢肯定,网络上有很多关于它的文章。


推荐阅读