使用Button 可能都会监听之 当其被点击 就会有函数负责回调 那么其到底是怎么实现的呢?
今天要做的就是摸清楚之 为了减少不必要的麻烦 打算extends EditText 并在其上设立监听器
[代码 步骤]
1. 定义Edit2Text 且extends EditText
public class Edit2Text extends EditText {
OnTextChangedListener changedListener;
TextWatcher tWatcher;
}
2. 定义其上的监听器:OnTextChangedListener 并定义函数:onChanged() 用于执行具体回调
public static interface OnTextChangedListener {
public void onChanged(Edit2Text e2t, String text);
}
需要注意的 这几行代码的修饰关键字:
1. static :使其能够脱离Edit2Text而存在
2. interface : 使其自动填充其内部函数
3. “void onChanged(Edit2Text e2t, String text)” 中的第一个参数e2t 用于做分别 具体奥妙 后面再细说
3. 设定监听器
public void setOnChangedListener(OnTextChangedListener l){
changedListener = l;
}
4. 定义TextWatcher 当字符内容改变 通知监听器
* 定义TextWatcher'
tWatcher = new TextWatcher(){
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
updateText(s.toString());
}
};
this.addTextChangedListener(tWatcher);
* 通知监听器
private void updateText(String s){
changedListener.onChanged(this, s);
}
5. 如何使用
public class Edit2TextTest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Edit2Text e2t = new Edit2Text(this);
setContentView(e2t);
e2t.setOnChangedListener(new Edit2Text.OnTextChangedListener(){
@Override
public void onChanged(Edit2Text e2t, String text) {
// TODO Auto-generated method stub
Log.d("TAG","[String:]"+text);
}
});
}
}
6. emulator 运行截图:
*
* Log 信息:
D/dalvikvm( 674): GC freed 223 objects / 8848 bytes in 108m
D/TAG ( 941): [String:]i am
D/TAG ( 941): [String:]i am
D/TAG ( 941): [String:]i am e
D/TAG ( 941): [String:]i am ed
D/TAG ( 941): [String:]i am edi
D/TAG ( 941): [String:]i am edit
D/TAG ( 941): [String:]i am edit2
D/TAG ( 941): [String:]i am edit2t
D/TAG ( 941): [String:]i am edit2te
D/TAG ( 941): [String:]i am edit2tex
D/TAG ( 941): [String:]i am edit2text
D/TAG ( 941): [String:]i am edit2text,
D/TAG ( 941): [String:]i am edit2text,
D/TAG ( 941): [String:]i am edit2text, h
D/TAG ( 941): [String:]i am edit2text, he
D/TAG ( 941): [String:]i am edit2text, hel
D/TAG ( 941): [String:]i am edit2text, hell
D/TAG ( 941): [String:]i am edit2text, hello
D/TAG ( 941): [String:]i am edit2text, hello!
分享到:
相关推荐
button5.setOnClickListener(operator5_1); button6.setOnClickListener(operator6); // caculateService =new CaculateService(); serviceIntent=new Intent(ActivityDemo.this,CaculateService.class); ...
button.setOnClickListener(//为按钮对象添加OnClickListener接口实现 //OnClickListener为View的内部接口,其实现者负责监听鼠标点击事件 new View.OnClickListener(){ public void onClick(View v){ ...
Buttonbtn=(Button)findViewById(R.id.button); Buttonbtn2=(Button)findViewById(R.id.button2); btn.setOnClickListener(listener); btn2.setOnClickListener(listener2);} OnClickListenerlistener=new ...
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 在这里处理点击事件 } }); ``` 如果你有多个Button需要监听,可以为每个Button创建一个单独的监听器,但...
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { button.setOnClickListener(null); // 取消监听 // 执行业务逻辑 new Handler().postDelayed(() -> { ...
myButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 在这里编写按钮被点击时执行的代码 } }); ``` 或者使用lambda表达式简化代码: ```java myButton....
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { button.showProgress(); // 显示进度条 // 开始执行耗时操作 new Thread(new Runnable() { @Override ...
QuizActivity 的Android源码,仅供参考。... import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View... mFalseButton.setOnClickListener(new View.OnClickListener() {
progressButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { progressBar.setVisibility(View.VISIBLE); new Thread(new Runnable() { @Override public void ...
button1.setOnClickListener(new DownTextListener()); button2.setOnClickListener(new DownMP3Listener()); } class DownTextListener implements OnClickListener{ @Override public void onClick(View v) ...
cl = new Button.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.btnLeft: leftView(); break; case R.id.btnRight: ...
fuhao[6].setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub str=""; et.setText(str); vi=v; } }); fuhao[7].setOnClickListener...
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { button.setEnabled(false); // 执行操作 // ... button.setEnabled(true); } }); ``` 2. **使用...
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 在这里处理点击事件 Toast.makeText(MainActivity.this, "Button clicked", Toast.LENGTH_SHORT).show();...
button.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { String mobile = mobileText.getText().toString(); //拔打电话号码 //"android.intent.action.CALL" ...
btPoint.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String str1=etResult.getText().toString(); if(str1.equals("")){ etResult.setText(""); }else{ ...
downloadMp3Button.setOnClickListener(new DownloadMp3Listener()); } class DownloadTxtListener implements OnClickListener{ public void onClick(View v) { HttpDownloader httpDownloader = new ...
public class MyBtnListener implements OnClickListener{ private final int layout_id; public MyBtnListener(int layout) { layout_id = layout; } @Override public void onClick(View v) { ...
btnTo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "我被点击了 2", Toast.LENGTH_LONG).show(); } }); ``` 3. 使用已有...
holder.viewBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showInfo(position); } }); return convertView; } ``` 在`onClick()`方法中,我们调用了`...