浏览 9376 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-04-07
使用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!
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |