我刚刚使用在线网络服务为文本字段实现了自动完成,基于 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/