Ich muss EditText
in meiner App so überwachen, dass wenn in EditText
Daten in 2 Zeilen stehen, und ich dann in der 3. Zeile schreiben möchte, die Daten der vorherigen 2 Zeilen gelöscht werden sollen.
Dafür benutze ich folgende Methode:
mTextWatcher = new TextWatcher() {
private int zeilen;
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
Log.v("", "innerhalb von ontextchnaged");
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
zeilen = getTotalLines(txtDataSource);
if (zeilen == 2) {
txtDataSource.removeTextChangedListener(mTextWatcher);
Log.v("", txtDataSource.getText().toString());
txtDataSource.setText("");
txtDataSource.addTextChangedListener(mTextWatcher);
}
}
@Override
public void afterTextChanged(Editable s) {
Log.v("", "innerhalb von aftertextchanged");
}
};
txtDataSource.addTextChangedListener(mTextWatcher);
und ich erhalte die Anzahl der Zeilen, die durch den folgenden Code eingegeben wurden:
private int getTotalLines(EditText editText) {
int zeilennummer = 0;
String text = editText.getText().toString()
.substring(0, editText.getSelectionStart());
for (int i = 0; i < text.length(); i++) {
if (String.valueOf(text.charAt(i)).equalsIgnoreCase("\n")) {
zeilennummer++;
}
}
return zeilennummer;
}
Also, wenn ich 2 Zeilen Daten in EditText
erhalte, entferne ich den Watcher aus EditText
, lösche die Daten aus EditText
und füge dann den Watcher wieder hinzu.
Alles funktioniert gut, aber das Problem ist, dass nach 2 Zeilen, wenn ich anfange zu schreiben, es nicht den ersten Buchstaben schreibt, den ich von der Tastatur eingebe, es beginnt mit der Eingabe des zweiten Zeichen.
Also, nach 2 Zeilen, wenn ich 2 Zeichen eingebe, schreibt es nicht das erste Zeichen, das ich eingegeben habe, sondern beginnt mit dem zweiten Zeichen.
Bitte hilf mir, das zu lösen.
Vielen Dank ....