0

我正在开发一个应用程序,其中包含大约 8000 个印度城市的名称。当用户输入时,我使用自动完成来帮助用户完成工作。但是一些城市名称的拼写对于其他州的人来说很难猜到。所以我们需要一个近似的字符串匹配来自动完成,而不是默认的精确匹配。

例如有像这样的名字

  • 蒂鲁马伊莱
  • 蒂鲁内图尔
  • 蒂鲁图赖尤尔
  • 蒂鲁瓦鲁

并且

  • 蒂鲁内尔维利
  • 蒂鲁曼加兰

如果用户搜索城市“Tirunelveli”但在文本框中键入“Thirunel”,则自动完成文本视图不会显示名称,并且会进行精确的字符串匹配。

我应该怎么做才能在自动完成下拉列表中获得近似匹配的字符串..

4

2 回答 2

6

您需要创建一个带有自定义过滤器的自定义 ArrayAdapter(该过滤器基于Lexographic 距离小于某个阈值(例如 3)),您需要在getFilter()适配器的方法中返回该过滤器。

于 2012-04-27T08:59:16.327 回答
1

经过大量搜索和实验,我自己找到了解决方案..

要进行自定义字符串匹配,我们需要一个自定义数组适配器,我们需要扩展 ArrayAdapter 类并编写我们自己的字符串匹配算法。

我们需要getFilter为此功能覆盖 ArrayAdapter 类的方法,getItem并将getCount方法添加到我们的自定义适配器类。

于 2012-05-14T05:34:30.130 回答