和我在南方一起工作的朋友說,“南北方的差異其實蠻大的?!蔽壹以诒狈?,也在南方工作,不過我倒是覺得差異不怎么大,因為我在北方的時候,就沒有女朋友,而來到了南方,同樣沒有女朋友。
“專業(yè)、務(wù)實、高效、創(chuàng)新、把客戶的事當(dāng)成自己的事”是我們每一個人一直以來堅持追求的企業(yè)文化。 創(chuàng)新互聯(lián)是您可以信賴的網(wǎng)站建設(shè)服務(wù)商、專業(yè)的互聯(lián)網(wǎng)服務(wù)提供商! 專注于網(wǎng)站設(shè)計、做網(wǎng)站、軟件開發(fā)、設(shè)計服務(wù)業(yè)務(wù)。我們始終堅持以客戶需求為導(dǎo)向,結(jié)合用戶體驗與視覺傳達(dá),提供有針對性的項目解決方案,提供專業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場,引領(lǐng)市場!開發(fā)時遇到一個問題,如同標(biāo)題,當(dāng)一個類繼承了TextWatcher時,倘若這個類中有很多EditText控件,那么如何知道調(diào)用TextWatcher的是哪一個EditText控件呢?如果一個類繼承的是OnClickListener,那可以通過View獲取控件的Id值,從而分辨控件,做對應(yīng)操作??上extWatcher似乎沒有類似的方法。我是這樣解決的:
布局文件:
很簡單,只是寫了幾個EditText控件。
主類:
package com.example.edittexttest; import android.app.Activity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.View; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class EditTextTest extends Activity { EditText edit1, edit2, edit3, edit4, edit5; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_edit_text_test); edit1 = (EditText) findViewById(R.id.edit1); edit1.addTextChangedListener(new ClassOfTextWatcher(edit1)); setCursorToEnd(edit1); edit2 = (EditText) findViewById(R.id.edit2); edit2.addTextChangedListener(new ClassOfTextWatcher(edit2)); setCursorToEnd(edit2); edit3 = (EditText) findViewById(R.id.edit3); edit3.addTextChangedListener(new ClassOfTextWatcher(edit3)); setCursorToEnd(edit3); edit4 = (EditText) findViewById(R.id.edit4); edit4.addTextChangedListener(new ClassOfTextWatcher(edit4)); setCursorToEnd(edit4); edit5 = (EditText) findViewById(R.id.edit5); edit5.addTextChangedListener(new ClassOfTextWatcher(edit5)); setCursorToEnd(edit5); } private class ClassOfTextWatcher implements TextWatcher { private TextView view; public ClassOfTextWatcher(View view) { if (view instanceof TextView) this.view = (TextView) view; else throw new ClassCastException( "view must be an instance Of TextView"); } @Override public void afterTextChanged(Editable s) { if (s.length() <= 0) { switch (view.getId()) { case R.id.edit1: Toast.makeText(EditTextTest.this, "第一個編輯框為空!", Toast.LENGTH_LONG).show(); break; case R.id.edit2: Toast.makeText(EditTextTest.this, "第二個編輯框為空!", Toast.LENGTH_LONG).show(); break; case R.id.edit3: Toast.makeText(EditTextTest.this, "第三個編輯框為空!", Toast.LENGTH_LONG).show(); break; case R.id.edit4: Toast.makeText(EditTextTest.this, "第四個編輯框為空!", Toast.LENGTH_LONG).show(); break; case R.id.edit5: Toast.makeText(EditTextTest.this, "第五個編輯框為空!", Toast.LENGTH_LONG).show(); break; default: break; } } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } } //將編輯框的光標(biāo)移動到末尾 public void setCursorToEnd(EditText text){ String content = text.getText().toString(); text.setSelection(content.length()); } }
寫了一個叫“ClassOfTextWatcher”的內(nèi)部類,它實現(xiàn)了TextWatcher接口,這個內(nèi)部類的構(gòu)造方法中傳入View控件來獲取控件的Id。
效果圖:
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。