【发布时间】:2011-05-15 10:37:11
【问题描述】:
我有一个包含大约 1000 个药物名称的字符串数组资源
<string-array name="index">
<item>Aspirin</item>
<item>Levitra</item>
....
</string-array>
我尝试将此字符串数组加载到活动内的 String[] 中。 使用此处找到的 Google 的 java 文档提供的相同语法。 http://developer.android.com/guide/topics/resources/string-resource.html#StringArray
Resources res = getResources();
String[] drugs = res.getStringArray(R.array.index);
我的字符串数组似乎有太多记录,导致我的应用程序崩溃(堆栈溢出?)当我将字符串数组资源减少到大约 506 条记录时,应用程序再次工作,但添加了 1 个以上元素在字符串数组中会使应用程序崩溃。
我该怎么办?我想编写逻辑来过滤和对列表执行其他操作。我在应用程序中没有 SQL 数据库,因此无法在数据库中进行处理。有没有办法遍历字符串数组资源而不将其加载到字符串 [] 中?我注意到资源是一个指针。或者是否有其他可行的数据结构或方法?
谢谢,
【问题讨论】:
-
“我有一个包含大约 1000 个药物名称的字符串数组资源”——为什么?您从普通 XML 资源无法满足的字符串数组中获得什么价值?
-
@CommonsWare 谢谢,干杯!我使用的是字符串数组资源,因为它是 Google 自己的教程用来将记录列表加载到 ListView 中的首选方式。当我将所有记录按其起始字母分解时,一切都很棒。现在我正在尝试实现一个搜索功能,所以理想情况下我想一次遍历所有记录,而不是为每个起始字母做一个循环。我不熟悉 Android 中的内存分配架构,但我有点惊讶将 506 条记录加载到 String[] 会导致应用程序崩溃:p
-
如果有一种方法可以遍历 R.arrays 中的字符串数组资源而不首先将其按值加载到数据结构中,那就太棒了...:D,或者可能是向量或一个链表能容纳更多的数据吗?也许我只需要创建一个 SQLite 数据库并在那里处理它,或者只是在我的搜索方法中遍历所有 26 个字母。顺便说一句,感恩节快乐