【问题标题】:select any item from a list of 10,000 items in android从 android 中的 10,000 个项目列表中选择任何项目
【发布时间】:2011-10-20 03:35:09
【问题描述】:

我尝试搜索问题以查看是否有任何与我的问题类似的线索,但到目前为止还没有找到。 这是我的问题:我有一个产品列表,其中包含存储在 SQLite 数据库中的约 10,000 个项目。在我的应用程序中,我需要从这个列表中搜索任何项目。我有几个选择:

  • 使用 autoCompleteTextView,预加载所有产品,当我输入产品名称时,列表会建议产品,因此我只需要从建议中进行选择。这是最简单的方法,但我觉得 10,000 个项目(甚至未来更多)会很重
  • 当我输入任何字符并单击搜索时,应用程序将从数据库中选择所有产品,并将字符作为过滤器。然后将结果集馈送到某个列表视图,以便我可以选择任何项目。这种方法将节省内存,因为应用程序不会将所有项目加载到内存,而只会加载包含过滤字符的项目。

有没有更好的方法来做到这一点? 谢谢

【问题讨论】:

    标签: android android-listview autocompletetextview


    【解决方案1】:

    您的第二个选项是最好的方法。它类似于您在输入查询时获取推荐搜索结果列表的方式。对你来说,假设你使用 asynctask 来查询你的数据库,你可以得到一个由 onProgressUpdate 发出的正确加载消息

    【讨论】:

    • 感谢您的回答。你的意思是类似于谷歌即时搜索?如果是这种情况,那么在我输入任何字符的任何时候都会进行查询,不是吗?
    • 顺便说一句,我对 android 很陌生,所以您能否详细说明“对您而言,假设您使用 asynctask 查询您的数据库,您可以获得由 onProgressUpdate 发出的正确加载消息”tks
    • 首先,如果你刚接触android ASyncTask 应该是你最好的朋友。谷歌网站上的文档非常清楚并提供了一个例子。它是在 android 中处理多个线程的最佳方式,并提供了一种机制来报告后台线程的进度。只要有人键入字母,就会进行查询,但仍然使用 asynctask 它不会让应用程序陷入困境。
    • 您还可以使用 asynctask 部分加载您的列表,当用户向下滚动到 20 个左右项目的末尾时,它会加载更多。 Google 语音和其他应用在这方面做得很好。
    • 谢谢,ASyncTask 听起来很有趣,我会尽快阅读那部分 :)
    【解决方案2】:

    你能把物品分类吗?这样您就可以使用 spinner 选择类别,并使用 AutoCompleteTextView 键入和选择项目。

    【讨论】:

    • 很遗憾所有商品都属于同一类别:|
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 2022-11-07
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多