我必须在我的应用中观看EditText
,如果EditText
数据在2行中
然后,我想再写第3行,然后前两行的数据应该清楚。
为此,我使用以下方式进行
mTextWatcher = new TextWatcher() {
private int lines;
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
Log.v("", "inside ontextchnaged");
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
lines = getTotalLines(txtDataSource);
if (lines == 2) {
txtDataSource.removeTextChangedListener(mTextWatcher);
Log.v("", txtDataSource.getText().toString());
txtDataSource.setText("");
txtDataSource.addTextChangedListener(mTextWatcher);
}
}
@Override
public void afterTextChanged(Editable s) {
Log.v("", "inside aftertextchanged");
}
};
txtDataSource.addTextChangedListener(mTextWatcher);
我没有通过以下代码输入行
private int getTotalLines(EditText editText) {
int lineNumber = 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")) {
lineNumber++;
}
}
return lineNumber;
}
因此,当我在EditText
中获得2行数据时,我将从EditText
删除观察者
然后清除EditText
的数据,并再次在EditText
添加了观察者。
每一件事情都很好,但问题是在我开始写完之后是2行之后它没有写出我从键盘输入的第一个字符,它开始从第二个字符输入写入。
所以在输入2个字符的2行后,它没有写第一个字符,我输入它开始写第二个字符。
请帮我解决这个问题。
谢谢....
答案 0 :(得分:1)
最后我解决了我的问题。
这可能不是标准的方法,但我没有找到任何其他方法来做到这一点 的 beforeTextChanged()强>
我在 onTextChanged()
中使用下面的代码解决了 @Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
lines = getTotalLines(txtDataSource);
if (lines == 2 ) {
String frstChar = String.valueOf(s.toString().charAt(s.toString().length() - 1));
txtDataSource.removeTextChangedListener(mTextWatcher);
txtDataSource.setText("" + frstChar);
txtDataSource.setSelection(txtDataSource.getText().toString().length());
txtDataSource.addTextChangedListener(mTextWatcher);
}
}
现在在第3行第一个字符显示在EditText中。
我正在分享我的方式,以便如果其他人会遇到这样的问题,他们可以通过这种方式解决..
由于
答案 1 :(得分:-1)
尝试从单词的中间进行编辑时解决问题。
“setSelection”一直强制你在文本的末尾写字。