【问题标题】:onTextChanged custom filter german umlautsonTextChanged 自定义过滤器德语变音符号
【发布时间】:2013-09-18 15:01:42
【问题描述】:

我正在为ArrayAdapter 使用过滤器。现在我想拥有以下功能:

例如,我的列表视图包含单词käuflich,搜索输入为kaufkäuflich 应显示为结果。所以 ö,ä,ü 应该另外替换为 o,a,u。 这可能吗?

这是我的简单过滤器

    public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
        // When user changed the Text
        Activity.this.adapter.getFilter().filter(cs);  
    }

谢谢

【问题讨论】:

    标签: android listview textwatcher


    【解决方案1】:

    您可以使用java.text.Normalizer 删除重音符号。迭代Filter.performFiltering(CharSequence) 中的列表项时,请执行以下操作:

    for(int i = 0; i<Original_Names.size(); i++){
        filterableString = Original_Names.get(i);
    
        String s = Normalizer.normalize(filterableString, Form.NFD);
    
        // Remove Accents
        String withoutAccents = 
            s.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
    
        if(withoutAccents.toLowerCase().contains(filterString)){
            Filtered_Names.add(filterableString);
        }
    }
    

    在此提醒一句:Link

    【讨论】:

    • 谢谢,代码实现了,但是搜索速度很慢。我的数组列表是从 SQL 查询中填充的,这可能是问题吗?
    • @Oli 是的,这可能是问题所在。但是很抱歉,我不能给你一个肯定的答案。列表是否被正确过滤?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 2013-02-09
    • 1970-01-01
    • 2021-09-28
    • 2013-12-25
    • 2016-06-16
    • 2011-11-07
    相关资源
    最近更新 更多