android,java使用Button 可能都會監(jiān)聽之 當其被點擊 就會有函數負責回調 那么其到底是怎么實現的呢? 今天要做的就是摸清楚之 為了減少不必要的麻煩 打算extends EditText 并在其上設立監(jiān)聽器
[代碼 步驟] 1. 定義Edit2Text 且extends EditText
public class Edit2Text extends EditText {
OnTextChangedListener changedListener;
TextWatcher tWatcher;
}
復制代碼
2. 定義其上的監(jiān)聽器:OnTextChangedListener 并定義函數:onChanged() 用于執(zhí)行具體回調 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. 設定監(jiān)聽器public void setOnChangedListener(OnTextChangedListener l){
changedListener = l;
}
復制代碼 4. 定義TextWatcher 當字符內容改變 通知監(jiān)聽器 * 定義TextWatcher' tWatcher = new TextWatcher(){
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
06.
}
@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);
復制代碼 * 通知監(jiān)聽器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);
06. 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);
}
});
}
}
復制代碼 * Log 信息:
Java代碼 收藏代碼
01. D/dalvikvm( 674): GC freed 223 objects / 8848 bytes in 108m
02. D/TAG ( 941): [String:]i am
03. D/TAG ( 941): [String:]i am
04. D/TAG ( 941): [String:]i am e
05. D/TAG ( 941): [String:]i am ed
06. D/TAG ( 941): [String:]i am edi
07. D/TAG ( 941): [String:]i am edit
08. D/TAG ( 941): [String:]i am edit2
09. D/TAG ( 941): [String:]i am edit2t
10. D/TAG ( 941): [String:]i am edit2te
11. D/TAG ( 941): [String:]i am edit2tex
12. D/TAG ( 941): [String:]i am edit2text
13. D/TAG ( 941): [String:]i am edit2text,
14. D/TAG ( 941): [String:]i am edit2text,
15. D/TAG ( 941): [String:]i am edit2text, h
16. D/TAG ( 941): [String:]i am edit2text, he
17. D/TAG ( 941): [String:]i am edit2text, hel
18. D/TAG ( 941): [String:]i am edit2text, hell
19. D/TAG ( 941): [String:]i am edit2text, hello
20. D/TAG ( 941): [String:]i am edit2text, hello!
|