Android TextView使用append()数百次都很慢-解决方案?

Android TextView使用append()数百次都很慢-解决方案?,android,textview,append,line,Android,Textview,Append,Line,我有一个Android源代码编辑器,我有一个行号计数器,在主编辑文本的左边,里面有源代码 我有以下用于更新行号文本视图的功能: String lineDelimiter = "\n"; public void updateLineNumbers(){ int lines = textBox.getLineCount(); lineNums.setText(1 + lineDelimiter); for(int i = 2; i < lines; i++){

我有一个Android源代码编辑器,我有一个行号计数器,在主编辑文本的左边,里面有源代码

我有以下用于更新行号文本视图的功能:

String lineDelimiter = "\n";
public void updateLineNumbers(){
    int lines = textBox.getLineCount();
    lineNums.setText(1 + lineDelimiter);
    for(int i = 2; i < lines; i++){
      lineNums.append(i + lineDelimiter);
    }
}
String lineDelimiter=“\n”;
公共void updateLineNumbers(){
int lines=textBox.getLineCount();
lineNums.setText(1+lineDelimiter);
对于(int i=2;i
所有这些都很好,但问题是当你有一个文档,比如说200多行,你开始注意到添加行时有点延迟。这是不是导致Android TextView的setText/append方法有点慢?或者是因为浓缩物导致了延迟

我还做了一个类似的函数,当用户添加行号时会追加行号,反之亦然,而不是像上面的函数那样清除TextView并再次添加每个行号。但当用户添加/删除行时,此功能仍然滞后于应用程序

我怎样才能阻止这一切?我想不出该怎么办,这让我感到压力很大,因为它使我的应用程序滞后,并且使它无法用于大文件!:(

谢谢你的关注


解决方案

我发现了一种获得快速行号的方法,即使用覆盖onDraw(Canvas Canvas)的自定义TextView,并以无延迟行号的方式绘制它们:)

这是不是导致Android TextView的setText/append方法有点慢?或者是因为浓缩物导致了延迟

使用并找出答案

即兴说来,我可以想象在
TextView
上调用
append()
一整串时间要比在
StringBuilder
上调用
append()
一整串时间,然后在
TextView
上调用
setText()
一次要慢得多

我怎样才能阻止这一切


不要那样处理行号。例如,将
文本视图
放在
编辑文本
的左侧,并将行号放在
文本视图
中,每行一个。

我忘了提到,我也尝试过按您描述的方式使用StringBuilder,速度更快,但仍然落后。我已经找到了一种解决方案,使用覆盖onDraw()的TextView并以这种方式绘制行号是完美的,到目前为止没有延迟,只需尝试获得我想要的布局即可。谢谢你,马克!:)