我在读关于Android编程中的TextWatcher的文章。我无法理解afterTextChange()
和onTextChanged()
之间的区别。
虽然我提到了TextWatcher的onTextChanged、beforeTextChanged和postTextChanged之间的差异,但我仍然无法想到需要使用onTextChanged()
而不是postTextChanged()
的情况。
这是解释:
onTextChanged:这意味着当你开始输入时,就像你想写“运动”一样,它会调用每个字符,就像当你按下“s”然后再按“p”然后按“o”等等时,它会调用…
afterTextChanged:这将在您停止键入时调用,它将在您完全写入“sport”后调用,这是主要区别。
YOUR_EDIT_TEXT.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//Your query to fetch Data
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.length() > 0) {
//Your query to fetch Data
}
}
});
只是在评论里补充一下Pratik Dasa的回答和与@SimpleGuy的讨论,因为我没有足够的名声来评论。
这三个方法也由EditText.setText("your string here")
触发。这将使长度为16(在本例中),因此count
并不总是1
。
请注意,这三种方法的参数列表不相同:
abstract void afterTextChanged(Editable s)
abstract void beforeTextChanged(CharSequence s, int start, int count, int after)
abstract void onTextChanged(CharSequence s, int start, int before, int count)
这就是afterTextChanged
和onTextChanged
:parameters之间的区别所在。
也请看看这个线程中接受的答案: Android文本观察器.后文本更改 vs 文本观察器.on文本已更改
我在Android Dev Portal上找到了对此的解释
http://developer.android.com/reference/android/text/TextWatcher.html
**abstract void afterTextChanged(Editable s)**
This method is called to notify you that, somewhere within s, the text has been changed.
**abstract void beforeTextChanged(CharSequence s, int start, int count, int after)**
This method is called to notify you that, within s, the count characters beginning at start are about to be replaced by new text with length after.
**abstract void onTextChanged(CharSequence s, int start, int before, int count)**
This method is called to notify you that, within s, the count characters beginning at start have just replaced old text that had length before.
所以,两者的区别是:
问题内容: 这是功课。入门Java类。仍然把我的头缠在这东西上。 该项目是要建立一个库存管理系统。 除了如何使此按钮更改JTextField中的文本外,我已经弄清楚了一切。它需要从产品阵列(在本例中为DVD)中添加信息。这本书讨论了管理诸如JTextField的字体,位置和状态之类的不同方法,但是没有涉及格式化或调用文本的方法。 这是我要使用JTextArea进行操作的示例。从本质上讲,这就是我想
我必须取编辑文本的值并将其除以1.21....错误在哪里 错误:
在我的Android项目中,我必须将TextChangedListener(TextWatcher)添加到编辑文本视图中。它有三个部分: < Li > < code > ontext changed() < Li > < code > beforeTextChanged() < Li > < code > afterTextChanged() 这三个有什么区别?我必须在键侦听器上实现一个表搜索,对
问题内容: 我似乎无法在我尝试制作的Mac应用程序中更改文本标签。我正在迅速。这是我正在使用的代码: 这些似乎都不起作用,这是我需要完成的唯一问题。PS当我写sumlab.text时,它说NSTextField没有名为text的成员 问题答案: NSTextField与UITextField不同。它没有属性。但是,它确实继承自具有字符串值属性的NSControl。
问题内容: 我需要在键入时替换EditText内的文本:示例:如果用户按下“ A”,它将被存储到缓冲区中,而在EditText上显示“ D”(看起来就像他按下“ D”)。现在,我可以读取按下的字符,但是在et中不能显示任何字符,以避免stackoverflow: 问题答案: 您可以根据需要更改它:
问题内容: 我创建了一个扩展JDialog的类,其中有一些复选框和3个按钮:接受,取消和全选。 当用户单击全选时,应选中每个复选框,如果再次单击,则应取消选中每个复选框。效果很好,但我还希望按钮的文本在“全选”和“全选”之间切换。我在这里遇到了麻烦,因此当用户单击按钮并将文本更改为“取消全选”时,该按钮消失了。 我在这里将类简化为最简单的形式: 我看不出有什么问题。有什么帮助吗? 问题答案: 该按