在Android中为AutoCompleteTextView读取大型列表

时间:2013-08-14 19:24:58

标签: android file-io autocompletetextview

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

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);

当我开始活动时,垃圾收集器会发疯。但最终所有物品在等待大约1分钟后才被装上。 是否有方法按需加载文件或使其更快?

1 个答案:

答案 0 :(得分:1)

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

获取回调