- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在编写一个 Android 应用程序,它读取单个文本文件并将其显示在 TextView
上。
我现在正在做的是将整个文件读入一个字符串(使用 BufferedReader
和 StringBuilder
)并将其显示在 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/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!