onTextChanged自定义过滤器德语变音符号

时间:2013-09-18 15:01:42

标签: android listview textwatcher

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

例如,我的Listview包含单词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);  
    }

由于

1 个答案:

答案 0 :(得分: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