pro*_*ngs 102 android textwatcher android-edittext
我知道一点点,TextWatcher
但是对你输入的每一个角色都会发出火花.我想要一个在用户完成编辑时触发的监听器.可能吗?另外在TextWatcher
我得到一个实例,Editable
但我需要一个实例EditText
.我怎么做到的?
编辑:第二个问题更重要.请回答.
Cat*_*ata 197
首先,如果EditText
失去焦点或用户按下完成按钮,您可以看到用户是否完成了对文本的编辑(这取决于您的实现以及最适合您的内容).其次,你不能让一个EditText
在中实例TextWatcher
只有当你已经宣布EditText
为一个实例对象.即使你不应该编辑EditText
内部TextWatcher
因为它不安全.
编辑:
为了能够将EditText
实例纳入您的TextWatcher
实现,您应该尝试这样的事情:
public class YourClass extends Activity {
private EditText yourEditText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
yourEditText = (EditText) findViewById(R.id.yourEditTextId);
yourEditText.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
// you can call or do what you want with your EditText here
// yourEditText...
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
});
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,上面的示例可能有一些错误,但我只想向您展示一个示例.
RNG*_*Guy 13
令我困扰的是,为我的所有EditText字段实现一个监听器要求我有丑陋,冗长的代码,所以我编写了下面的类.对任何绊脚石的人都有用.
public abstract class TextChangedListener<T> implements TextWatcher {
private T target;
public TextChangedListener(T target) {
this.target = target;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void afterTextChanged(Editable s) {
this.onTextChanged(target, s);
}
public abstract void onTextChanged(T target, Editable s);
}
Run Code Online (Sandbox Code Playgroud)
现在实现一个监听器有点清洁.
editText.addTextChangedListener(new TextChangedListener<EditText>(editText) {
@Override
public void onTextChanged(EditText target, Editable s) {
//Do stuff
}
});
Run Code Online (Sandbox Code Playgroud)
至于它发射的频率,可以在//Do stuff
给定的a之后执行检查以运行他们想要的代码
Pra*_*ash 12
任何人使用ButterKnife.您可以使用:
@OnTextChanged(R.id.zip_code)
void onZipCodeTextChanged(CharSequence zipCode, int start, int count, int after) {
}
Run Code Online (Sandbox Code Playgroud)
我用它完成了AutotextView
:
AutotextView textView = (AutotextView) findViewById(R.id.autotextview);
textView.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
seq = cs;
}
@Override
public void beforeTextChanged(CharSequence s, int arg1, int arg2, int arg3) {
}
@Override
public void afterTextChanged(Editable arg0) {
new SearchTask().execute(seq.toString().trim());
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
217470 次 |
最近记录: |