关于EditText的onTextChange函数
TextWatcher txtEditWatcher = new TextWatcher() {
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
Log.e(LOGTAG, "List size " + mStringList.size());
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
mIsChanged = true;
if (DEBUG) {
Log.i(LOGTAG, "onTextChanged");
}
if (mTxtEdit.getHeight() <= mEditTextMinHeight) {
Log.e(LOGTAG, "$$$$$$$$$$$$$$$$$$ reach min height!");
if (mIndex + 1 < mLengthList) {
mStringList.set(mIndex, mTxtEdit.getText()
+ mStringList.get(mIndex + 1));
mStringList.remove(mIndex + 1);
mLengthList -= 1;
int scrollY = mScrollview.getScrollY();
// mTxtEdit.setText(mStringList.get(mIndex));
mScrollview.setScrollY(scrollY);
mHasEverChange = true;
// setEditTextThread.start();
} else {
if (mTxtEdit.getText().toString().equals("")) {
if (mIndex - 1 >= 0) {
// If changed, then save the change to list
mStringList.remove(mIndex);
mLengthList -= 1;
mHasEverChange = true;
mIndex--;
// mTxtEdit.setText(mStringList.get(mIndex));
mIsChanged = false;
mScrollview.setScrollY(0);
// setEditTextThread.start();
}
}
}
}
}
};
关键是onTextChanged里面还有个setText,它又会导致onTextChange的调用,这样会一直递推下去?请问有没有好的解决办法?我要在onTextChanged之后,调用setText,改变EditText上显示的文本。 --------------------编程问答-------------------- 加个标记,表示onTextChanged是谁触发的。 --------------------编程问答--------------------
只有一个EditText,还能是谁? --------------------编程问答-------------------- 我也想知道有没有什么好的办法! --------------------编程问答-------------------- 我的意思是说用这个标记记录一下谁触发的ontextchanged,如果是settext就直接return。唉。 --------------------编程问答--------------------
恩,我懂你的意思了。谢谢了。 --------------------编程问答--------------------
补充:移动开发 , Android