Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Same letter gives different ASCII code

Tags:

java

android

I have android search query and performing filtering. All cases works exept one letter search - "ә" (kazakh language)

    @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;
    }

If I enter to search field "ә" letter they are not equal in my if case. "ә".contains(constraint.toString()) returns false.

like image 382
sj_8 Avatar asked Sep 14 '25 22:09

sj_8


1 Answers

I changed ASCII code of my char(letter): s.replace((char)601,(char)1241); Because performFiltering gives me 'ә' letter as 601. Then I changed it to correct one 1241. And now it works properly in my case.

@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;
}
like image 196
sj_8 Avatar answered Sep 16 '25 12:09

sj_8