2
我是java和android開發的新手,我正在研究通過EditText從用戶處獲取輸入的應用程序。但是,有時候輸入數據會有一些字符的編碼與應用程序所期望的不同。如何高效地編輯Android中的EditText中的文本
我創建了包含所有可能映射(約460個元素)的散列表,並且每當用戶鍵入(或粘貼)某些內容時,我都會使用afterTextChanged方法遍歷文本並將不匹配的編碼與正確顯示正確的。 我的代碼適用於小型條目,但是它的獲取速度越慢,因爲在每次交換後我都會遞歸調用afterTextChanged。當粘貼具有大約30個以上字符且編碼不正確的文本時,應用程序將崩潰。
這裏是我的代碼:
public void afterTextChanged(Editable editable) {
substituteText(editable);
}
public CharSequence substituteText(Editable txt) {
if (txt.length() == 0) {
return txt;
}
for (int i = 0; i < txt.length(); i++) {
char ch = txt.charAt(i);
CharSequence ret = myHashMap.get(ch);
if (ret != null) {
txt.replace(i, i + 1, ret);
}
}
return txt;
}
我想過克隆「編輯」一些,改變它,然後將它複製回的EditText編輯的變量,因此只能看到它作爲一個改變,但我失敗了做到這一點,因爲我找不到克隆它的簡單方法。
有沒有更有效的方法來做到這一點?
但是不是通過onTextChanged傳遞只讀的CharSequence?或者您建議我使用EditText.setText來更改它 –
是的,但是您可以直接在編輯文本中更改相應的位置。或者在這裏保存位置數據並在afterTextChanged中進行實際編輯。 –
它在android文檔中對於「onTextChange」它在最後說:**嘗試從這個回調對s進行更改是錯誤的。這是爲什麼? –