android - 在 Android 中读取大型列表以获取 AutoCompleteTextView

标签 android file-io autocompletetextview

我有一个 72000 行和 2,6M 大小的文件。在此文件中是 AutoCompleteTextView 的所有字符串项。 目前我是这样读的:

List<IcdObject> codes = new ArrayList<IcdObject>();
try {
    InputStream input = getAssets().open("icd.txt");
    BufferedReader br = new BufferedReader(new InputStreamReader(input));

    String line;
    while ((line = br.readLine()) != null) {
    String[] icd = line.split("|");
    codes.add(new IcdObject(icd[0], icd[1]));
    }

    input.close();
} catch (IOException e) {
    // TODO
    e.printStackTrace();
}
ArrayAdapter<IcdObject> adapter = new ArrayAdapter<IcdObject>(this,
    android.R.layout.select_dialog_item, codes);
AutoCompleteTextView at = (AutoCompleteTextView) findViewById(R.id.AutoComplete);
at.setThreshold(3);
at.setAdapter(adapter);

当我开始 Activity 时,垃圾收集器变得疯狂。但最后,在等待大约 1 分钟后,所有项目都会加载。 有没有一种方法可以按需加载文件或使其更快?

最佳答案

您可以使用 Loaders API 来执行这些大型数据集读取。 LoaderManager.LoaderCallbacks类用于从 LoaderManager 获取回调

关于android - 在 Android 中读取大型列表以获取 AutoCompleteTextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18240519/

相关文章:

java - 如何在 Recyclerview GridLayout 之间添加 Admob Ad

Android Spinner 在自定义 ListView 中不完全可见

php - 保存 PHP 应用程序设置的最佳方法是什么?

c - 为什么 fscanf 在没有被明确告知的情况下改变结构的值?

java - android 在 TextWatcher 中更改 autocompletetextview 适配器

android - 在 android.R.layout.simple_list_item_1 上使用 butterknife 绑定(bind) View

android - 无法使用 Android 库项目进行编译

Android Studio 3.0 - 警告alarmManager可能会产生NullPointerException

java - 当尝试通过读取文件打印二维数组时,我的输出收到 Null

android - 从 uiautomator 中的 AutoCompleteTextView 中选择项目