Ich habe einen Quellcode-Editor für Android und ich habe einen Zeilennummernzähler, der links von dem Haupt-EditText mit dem Quellcode darin steht.
Ich habe die folgende Funktion, die ich zum Aktualisieren des Zeilennummern-Textfelds verwende:
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);
}
}
All das ist gut, aber das Problem tritt auf, wenn Sie ein Dokument mit etwa 200 Zeilen haben, fangen Sie an, eine kleine Verzögerung beim Hinzufügen von Zeilen zu bemerken. Liegt das daran, dass die setText/append Methoden von Android TextView ein wenig langsam sind? Oder ist es die Verkettung, die die Verzögerung verursacht?
Ich habe auch eine ähnliche Funktion gemacht, die eine Zeilennummer anfügt, wenn der Benutzer eine Zeilennummer hinzufügt, und umgekehrt, anstatt das TextView zu leeren und wie die oben genannte Funktion jede Zeilennummer hinzuzufügen. Aber auch diese Funktion verlangsamt die App, wenn der Benutzer Zeilen hinzufügt/entfernt.
Wie kann ich das stoppen? Ich weiß nicht, was ich tun soll, und es macht mich fertig, weil es meine App verlangsamt und für große Dateien unbrauchbar macht! :(
Vielen Dank fürs Lesen!
LÖSUNG
Ich habe einen Weg gefunden, um schnelle Zeilennummern zu haben, und zwar indem ich einen benutzerdefinierten TextView mit überschriebener onDraw(Canvas canvas) verwende und auf diese Weise die Zeilennummern zeichne, was zu einer verzögerungsfreien Anzeige der Zeilennummern führt :).