我有android搜索查询和执行过滤。所有案件的作品都用一个字母搜索 - “ә”(哈萨克语)
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
final List<SongModel> l = dc.songList;
int count = l.size();
List<SongModel> nSongList = new ArrayList<SongModel>(count);
for (SongModel p : l) {
if ("ә".contains(constraint.toString())) {
nSongList.add(p);
}
}
results.values = nSongList;
results.count = nSongList.size();
return results;
}
如果我输入搜索字段“ә”字母,我的情况就不一样了。 “ә”.contains(constraint.toString())返回false。
答案 0 :(得分:2)
我改变了我的char(字母)的ASCII码:s.replace((char)601,(char)1241); 因为performFiltering给我'''字母为601.然后我改变它来纠正一个1241。 现在它在我的情况下正常工作。
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
final List<SongModel> l = dc.songList;
int count = l.size();
List<SongModel> nSongList = new ArrayList<SongModel>(count);
String s = constraint.toString();
s = s.replace((char)601,(char)1241);
// or s.replace('\u0259','\u04D9');
for (SongModel p : l) {
if (p.getName().contains(s)) {
nSongList.add(p);
}
}
results.values = nSongList;
results.count = nSongList.size();
return results;
}
答案 1 :(得分:0)
这能满足您的需求吗?
final int uniCodeForSchwa = (int) 'ә'; // 1241
String constraint = "somecharacters";
for (int i = 0; i < constraint.length(); i++){
char c = constraint.charAt(i);
int intValue = Character.getNumericValue(c);
if (uniCodeForSchwa == intValue) {
nSongList.add(p);
break;
}
}