Hallo,
ich kämpfe nach wie vor mit dem ListView, das durch einen SimpleCursorAdapter gefüllt wird. Jetzt geht es darum, Daten aus einem EditText bei/nach Benutzereingabe abzurufen. Das wollte ich über ein TextWatcher machen.
Wenn in das EditText etwas geschrieben wird, sollen sich die Daten in einem TextView ändern (simple Multiplikation mit vorgegebenem Wert). Das funktioniert mit dem TextWatcher aber nur halb und unzufriedenstellend -- mit anderen Worten: gar nicht.
Ich erhalte in der for-Schleife das EditText, das in der jeweiligen Reihe ist. Der erste insert() Aufruf funktioniert und wird an den Listener übergeben. Der Zweite, warum auch immer, funktioniert nicht. Ebensowenig werden Benutzereingaben an den Listener weitergegeben.
Es scheint, als ob der TextWatcher von den EditTexts direkt nach der for-Schleife wieder gelöscht wird.
Wo liegt der Fehler?
ich kämpfe nach wie vor mit dem ListView, das durch einen SimpleCursorAdapter gefüllt wird. Jetzt geht es darum, Daten aus einem EditText bei/nach Benutzereingabe abzurufen. Das wollte ich über ein TextWatcher machen.
Wenn in das EditText etwas geschrieben wird, sollen sich die Daten in einem TextView ändern (simple Multiplikation mit vorgegebenem Wert). Das funktioniert mit dem TextWatcher aber nur halb und unzufriedenstellend -- mit anderen Worten: gar nicht.
Java:
private final TextWatcher mTextWatcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
log("onTextChanged");
log(s);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
log("beforeTextChanged");
}
@Override
public void afterTextChanged(Editable s) {
log("afterTextChanged");
}
};
//...
mAdapter.changeCursor(cursor);
setListAdapter(mAdapter);
for (int i = 0; i < mAdapter.getCount(); i++) {
EditText edit = (EditText) mAdapter.getView(i, null, getListView())
.findViewById(R.id.F_DI_ET_amount);
edit.addTextChangedListener(mTextWatcher);
edit.getEditableText().insert(0, "50"); // funktioniert
}
EditText edit = ((EditText) mAdapter.getView(0, null, getListView())
.findViewById(R.id.F_DI_ET_amount));
edit.getEditableText().insert(0, "100"); //funktioniert nicht
Ich erhalte in der for-Schleife das EditText, das in der jeweiligen Reihe ist. Der erste insert() Aufruf funktioniert und wird an den Listener übergeben. Der Zweite, warum auch immer, funktioniert nicht. Ebensowenig werden Benutzereingaben an den Listener weitergegeben.
Es scheint, als ob der TextWatcher von den EditTexts direkt nach der for-Schleife wieder gelöscht wird.
Wo liegt der Fehler?
Zuletzt bearbeitet: