针对非拉丁字符串的Android SQLite选择args上/下案例问题

时间:2014-04-16 07:19:17

标签: android sqlite

我有一个基于CursorAdapter的Listview。我已经为它实现了过滤功能,一切正常,除了一件事: 当我用拉丁字母输入SearchView时,它会按预期过滤 - 不会在大写/小写字母之间产生差异。所以,当我有约翰史密斯"在我的列表中,我可以使用" john"来过滤它,但对于没有拉丁字母,这不起作用。如果我的名字以大写字母开头,我在SearchView中输入小写字母,它就找不到名字。

以下是可能有趣的代码部分:

String loaclSelection = SELECTION + " AND " + CONTACT_NAME + " LIKE ?";
String localArgs = new String[]{"%"+constraintString+"%"};

return new CursorLoader(getActivity(), 
    URI, 
    PROJETION, 
    loaclSelection, 
    localArgs,
    SORT_ORDER);

constraintString是来自searchView的字符串。

有人知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

Android sqlite中有COLLATE UNICODE但它并不适用于LIKE

请考虑以下事项:

  1. 添加另一个列,以小写形式存储名称,使用String.toLowerCase()以Java格式转换。

  2. 在Java中使用类似的小写字词作为搜索字词。

  3. 使用原始的混合大小写字段进行显示。