gpt4 book ai didi

Android - SimpleAdapter 过滤器查询,如何忽略重音?

转载 作者:行者123 更新时间:2023-11-29 14:03:19 26 4
gpt4 key购买 nike

我目前正在使用联系人的 ContentProvider 从设备中检索联系人,并允许用户通过在 EditText 中键入来过滤结果。

为此,我在 SimpleAdapter 上设置了一个过滤器查询,如下所示:

    contactsAdapter.setFilterQueryProvider(new FilterQueryProvider() {
String[] PROJECTION = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.HAS_PHONE_NUMBER,
};
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED COLLATE NOCASE ASC";

public Cursor runQuery(CharSequence constraint) {
String SELECTION = "LOWER(" + ContactsContract.Contacts.DISPLAY_NAME + ")"
+ " LIKE '" + constraint + "%' " + "and " + ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '1'";
Cursor cur = managedQuery(ContactsContract.Contacts.CONTENT_URI,
PROJECTION, SELECTION, null, sortOrder);
return cur;
}
});
setListAdapter(contactsAdapter);

这在大多数情况下都有效,但是当我有一个带有口音的联系人时(例如:Tést Contact),我希望即使用户输入 Test Contact 也能显示该联系人,目前它没有。

在这种情况下也不会忽略大小写,而对于标准字符,例如,如果我有一个名为 Omar 的联系人并搜索 omar 它匹配,但如果我有一个名为 Ómar 的联系人并搜索 ómar 它不匹配'匹配。

有谁知道我应该做什么来实现我想要实现的行为?

最佳答案

我会在这里看到 2 个选项:

  • 创建一个表,其中包含联系人姓名的无重音版本和对实际联系人 ID 的引用
  • 将重音字符替换为 ?在您的搜索中(这可能不会导致用户真正期望的行为,但要简单得多)

关于Android - SimpleAdapter 过滤器查询,如何忽略重音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8400227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com