2011-12-03 6 views
1

私はAndroid用のソースコードエディタを持っていますが、メインのEditTextの左側にある行番号カウンタがあり、その内部にソースコードがあります。Android TextViewがappend()を使用して時間がかかりすぎる何百もの時 - 解決策?

私は行番号のテキストビューを更新するために使用し、以下の機能があります。

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

すべてこれは罰金ですが、あなたが文書を持っているときに問題があるが200本の奇数ラインは、あなたが気づき始めると言います線を追加するときの遅延がほとんどありません。これはAndroid TextViewのsetText/appendメソッドが少し遅くなっている原因ですか?それとも遅れを引き起こしているのはコンカーティネーションですか?

また、TextViewをクリアして、上記の関数のように各行番号を再度追加するのではなく、ユーザーが行番号を追加するときに行番号を追加する同様の関数を作成しました。しかし、この機能は、ユーザーが行を追加/削除するときにアプリにまだ遅れています。

どうすればいいですか?私は何をすべきか考えることができず、それは私のアプリケーションに遅れているので、それは大きなファイルのためにそれを使用できなくするために私を強調している!探しているため:(

ありがとう!


SOLUTIONは

私はonDraw(キャンバスキャンバス)オーバーライドして、カスタムのTextViewを使用することです速い行番号を持つ方法を、見つけました遅れのない行番号をもたらすようにそれらを描画することができます:)。

答えて

1

これはAndroid TextViewのsetText/appendメソッドが少し遅くなる原因ですか?それとも遅れを引き起こしているのはコンカーティネーションですか?

Traceviewを使用してください。カフオフ

、私はTextViewに倍の全体の束append()を呼び出すとTextViewに一度setText()を呼び出し、その後、StringBuilderappend()回の束を呼び出すよりも大幅に遅くなることを想像。

どうすればいいですか?

このように行番号を処理しないでください。たとえば、EditTextの左側にTextViewと入力し、行番号をTextViewに1行に1つずつ入力します。

+0

私はあなたが説明したようにStringBuilderを使ってみたことを忘れてしまいましたが、速くても遅れていました。 OnDraw()でTextViewを使って解決策を見つけました。ライン番号を完全にオーバーライドして描画しました。これまでのラグはありませんでした。私が望むようなレイアウトを試してみる必要があります。とにかくありがとうマーク! :) – AlexPriceAP

関連する問題