在我的Android项目中,我必须将 TextChangedListener (TextWatcher)添加到编辑文本 View 中。它包括三个部分:
onTextChanged()
beforeTextChanged()
afterTextChanged()
这三个有什么区别?我不得不在键监听器上实现对表的搜索,对于我来说,这三个表看起来都一样。它们的功能也相同。当我输入产品名称的一部分时,该表将仅使用其中包含输入文字的那些产品进行重绘。但是我使用了
afterTextChanged()
部分。我的代码是:EditProduct.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
// System.out.println("onTextChanged"+s);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
// System.out.println("beforeTextChanged"+s);
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
// System.out.println("afterTextChanged"+s);
String new_prx = s.toString();
System.out.println(s);
mini_productList = new ArrayList<Product>();
// mini_productList
int count = 0;
if (new_prx.equals("")) {
loadtableProducts(productList);
} else {
for (int i = 0; i < productList.size(); i++) {
if (productList.get(i).getDescription().toString()
.substring(0, (new_prx.length()))
.equalsIgnoreCase(new_prx)) {
mini_productList.add(productList.get(i));
count++;
}
}
loadtableProducts(mini_productList);
}
}
});
那么有人可以给我解释这三个方面吗?
最佳答案
onTextChanged
在文本更改期间运行。
文字更改后,afterTextChanged
立即运行。beforeTextChanged
在更改文本之前立即运行。
根据要分配变量或执行操作的时间,可能要在更改之前或之后运行代码。
这是一个例子:
String afterTextChanged = "";
String beforeTextChanged = "";
String onTextChanged = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et = (EditText)findViewById(R.id.editText);
et.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int st, int b, int c)
{
onTextChanged = et.getText().toString();
}
@Override
public void beforeTextChanged(CharSequence s, int st, int c, int a)
{
beforeTextChanged = et.getText().toString();
}
@Override
public void afterTextChanged(Editable s)
{
afterTextChanged = et.getText().toString();
Toast.makeText(Activity.this, "before: " + beforeTextChanged
+ '\n' + "on: " + onTextChanged
+ '\n' + "after: " + afterTextChanged
,Toast.LENGTH_SHORT).show();
}
});
}
在这种情况下,假设您将文本从“h”更改为“hi”,输出将是:
关于android - TextWatcher的onTextChanged,beforeTextChanged和afterTextChanged之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20278382/