gpt4 book ai didi

java - Android - 如何高效地在 TextView 中加载大量文本?

转载 作者:搜寻专家 更新时间:2023-10-30 19:45:17 26 4
gpt4 key购买 nike

我正在编写一个 Android 应用程序,它读取单个文本文件并将其显示在 TextView 上。

我现在正在做的是将整个文件读入一个字符串(使用 BufferedReaderStringBuilder)并将其显示在 TextView 使用 setText(string)。一个 700KB 的文本文件可能需要大约 2 到 3 秒才能显示在屏幕上。

但我使用过市场上其他一些电子书阅读器,它们几乎可以立即显示相同的文本。任何人都知道我怎么能做到这一点?

谢谢。

编辑:许多人建议使用 ListView,但它不适用于我的特定情况。这是我对其中一个答案的回复:...[ListView] 出于某些原因对我不起作用。 (1) 为了使 Listview 看起来像 TextView,我们必须在换行符处拆分文本。如果我加载一个大段落,它就像加载一个 TextView 一样慢。 (2) 由于 ListView 仅测量屏幕上的项目,我无法提前知道整个文本的总“页数”或“高度”。

最佳答案

从本质上讲,关键是只在需要时加载所需的数据。一种方法是将每个段落放入它自己的 TextView 中,然后将其放入 ListAdapter 中,后者包含在 ListView 中。必须有某种索引集,这样每个段落都知道在数据文件中的何处查找。该界面将允许您在需要时仅加载所需的内容。您的列表适配器看起来像这样(此代码不完整,但至少应该让您了解应该做什么):

class ParagraphAdapter extends ListAdapter{
ArrayList<Integer> mLocations; // Somewhere define this to your locations, I'll leave that for you to figure out
protected View getView(int position,View convertView, ViewGroup parent)
{
mLocations.get(position); // Read the file starting at this position, until the next value
String text; // This is the output of the above
TextView tv=new TextView(context);
tv.setText(parent.getContext());
}
}

值得注意的是,亚马逊为 Kindle 应用程序使用了分页系统。如果您有该应用程序,则可以在每个页面的底部看到您所在的部分。每个“页面”的长度可能接近一个句子左右。然后只需获得正确的页面即可,这可以很快完成。

关于java - Android - 如何高效地在 TextView 中加载大量文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14587734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com