如何在Android中的EditText中有效地编辑文本

时间:2014-03-13 01:41:00

标签: java android android-edittext

我是java和android开发的新手,我正在开发一个通过EditText从用户那里获取输入的应用程序。但是,有时输入数据的某些字符的编码与应用程序所期望的不同。

我创建了一个包含所有可能映射(大约460个元素)的hashmap,每当用户输入(或粘贴)某些东西时,我都会使用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可编辑变量,所以它只会看到它作为一个更改,但我没有做到这一点,因为我找不到一个简单的方法克隆它。

有更有效的方法吗?

1 个答案:

答案 0 :(得分:1)

如果你使用onTextChanged而不是afterTextChanged,你将会传递用户键入的新角色以及它们的位置,你只需要检查它们。