java - 如何在 Android 中高效地编辑 EditText 中的文本

标签 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 可编辑变量,这样它只会将其视为一个更改,但我没有这样做,因为我找不到一种简单的方法来克隆它。

有没有更有效的方法来做到这一点?

最佳答案

如果您使用 onTextChanged 而不是 afterTextChanged,您将获得用户输入的新字符及其所在的位置,您只需要检查这些。

关于java - 如何在 Android 中高效地编辑 EditText 中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22367462/

相关文章:

java - Android 图片库和 fragment 问题

android - 如何在 ListView 的展示 View 中制作矩形 View

android - Kotlin:如何执行异步函数并等待它完成?

java - ViewPager 内的 fragment 问题

android - 如何创建如图所示的圆形编辑文本

android - 无法设置 colorControlNormal 和 android :textColor in style

java - 如何在 Android 中以编程方式禁用拼写更正

java - 如何将此Kotlin代码中的 “apply”转换为Java?

java - 如何将事件监听器与 "asking"结合起来进行事件?

Java Swing 按钮文本显示不同