Я новичок в разработке Android (я учусь на курсах), так что потерпите меня.
Мне нужно использовать TextWatcher для отображения отредактированного текста из виджета EditText в виджет TextView.
Например, если то, что было первоначально введено, редактируется (например, если пользователь набрал «Hoozledoofer», а затем выделил «zledoof» и, наконец, набрал вместо него «v»), мне пришлось бы сначала вывести изменение в формате:
'zledoof' => 'v'
Это показано в первой строке TextView. Затем во второй строке будет показан полный текст, присутствующий в виджете EditText:
Hoover
Я не знаю, как это сделать. Я знаю, что мне нужно вывести результаты в методе afterTextChanged. Как сохранить то, что было сделано, и по-прежнему выводить все, что набирается? Любой совет?
Ниже приведен пример TextWatcher, приведенный в классе:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtEdit = (EditText) findViewById(R.id.editText1);
viewText = (TextView) findViewById(R.id.text);
txtEdit.addTextChangedListener (new TextWatcher() {
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
Log.i("TC", "beforeTC " + s.toString() + " "
+ s.subSequence(start, start + count).toString());
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.i("TC", "onTC " + s.toString() + " "
+ s.subSequence(start, start + count).toString());
}
public void afterTextChanged(Editable s) {
Log.i("TC", "afterTC " + s.toString());
}
});
}
Вот то, что я пробовал, что дает предполагаемый окончательный результат, но он продолжает показывать каждую маленькую сделанную правку. Это может не быть проблемой и может работать для профессора:
txtEdit.addTextChangedListener (new TextWatcher() {
String changed, newStr, edit;
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
changed = s.subSequence(start, start + count).toString();
//Log.i("TC", "beforeTC " + s.toString() + " "
//+ s.subSequence(start, start + count).toString());
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
newStr = s.toString();
edit = s.subSequence(start, start + count).toString();
//Log.i("TC", "onTC " + s.toString() + " "
//+ s.subSequence(start, start + count).toString());
}
public void afterTextChanged(Editable s) {
viewText.setText(changed + " => " + edit + "\n" + newStr);
//Log.i("TC", "afterTC " + s.toString());
}
});
Window > Show View > Other...
, затемAndroid > LogCat
(очевидно, не используйте устаревшую версию.) - person Sam   schedule 19.02.2013