android - 将 Android 自动完成中的选择转换为字符串

标签 android autocomplete

我刚刚使用在线网络服务为文本字段实现了自动完成,基于 Stackoverflow 上的这个答案: ArrayAdapter is updated late from Webservice in AutoCompleteTextAdapter

使用 ArrayAdapter<User> implements Filterable ,我已经设法让自动完成功能按预期建议我输入。 User是一个 Java Bean,其中包含建议中提供的信息(年龄、姓名、...)。

当我选择一个建议时,自动完成字段填充了“错误”数据 - 使用 toString()方法,而不是 bean 的“名称”属性。

我的问题是:我能否覆盖(在适配器中)允许我指定如何转换 bean 以便为 AutoCompleteTextView 返回正确属性的方法? (理想情况下,不应更改 User.toString())

谢谢!

最佳答案

无需子类化 AutoCompleteTextView 并覆盖 convertSelectionToString 方法。同样的事情可以通过覆盖 convertResultToString 来实现。自定义 Filter 中的方法(您已经子类化)ArrayAdapter

我遇到了同样的问题:我的 ArrayAdapter 中的自定义对象的 toString() 实现不是我可以控制的。我实现了这样的方法:

// In custom Filter implementation

@Override
public CharSequence convertResultToString(Object result) {
   if(result instanceof MyCustomClass) {
      return ((MyCustomClass) result).getAttribute("name");
   }

   return super.convertResultToString(result);
}

关于android - 将 Android 自动完成中的选择转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7387956/

相关文章:

android - Android 的双簧管库是否支持音频处理?

javascript - jQuery UI 自动完成显示错误值

bash - 修改 bash 脚本中的 $READLINE_LINE 和 $READLINE_POINT 值

autocomplete - 如何在 Xtext 中编写自定义自动完成功能?

android - 是否可以访问 RenderScript 内核中的更多元素? [安卓]

android - 更改 native 应用程序中的包名称

android - Android开机时启动后台服务

javascript - 具有唯一值的组合框中的 Jquery 自动完成功能

c++ - Visual Studio 自动将括号添加到函数名称

android - 以编程方式在小部件上设置 ImageView 宽度和高度