Поиск в верхнем и нижнем регистре - PullRequest
0 голосов
/ 21 января 2019
public class ActivityPS extends AppCompatActivity {
    private PS_DA ps_da = new PS_DA(ActivityPS.this);
    RecyclerView recyclerView;
    android.widget.SearchView searchView;
    Realm realm = Realm.getDefaultInstance();
    AdapterPS adapterPS;
    List<PS> filteredPs;
    RealmResults<PS> psList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ps);
        cast();
        setUpRecycler();
        searchviewSetUp();
    }

    public void searchviewSetUp(){
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String s) {
                return false;
            }
        });
    }

    @Override
    public boolean onQueryTextChange(String s) {
        filteredPs =filter(psList,s);
        if (filteredPs.size()> 0){
            return true;
        }
        return false;
    }

    public List<PS> filter (List<PS> psLists,String s){
        s = s.toLowerCase();
        filteredPs = new ArrayList<>();
        for (PS psList : psLists){
        final String text = psList.getCommandName().toString().toLowerCase();
        if (text.contains(s));
            filteredPs.add(psList);
        }
        psList = realm.where(PS.class).contains("commandName",s).findAll();
        adapterPS = new AdapterPS(ActivityPS.this,psList,realm);
        recyclerView.setLayoutManager(new LinearLayoutManager(ActivityPS.this));
        recyclerView.setAdapter(adapterPS);

        return filteredPs;
    }
}

Я хочу выполнить поиск в базе данных своей области и хочу, чтобы мое представление поиска не чувствительно к регистру букв. Я сделал это, но он показывает только строчные данные в результате, будь то вставка строчными или прописными буквами. Я не знаю, что мне делать ...

Ответы [ 3 ]

0 голосов
/ 21 января 2019

Вы можете сделать realm DB поиск case insensitive, добавить Case.INSENSITIVE boolean в качестве третьего argument в методе:

public RealmQuery<E> contains(String fieldName, String value, boolean
> caseSensitive)

Из документации: все четыре строковых предикатато есть contains, beginsWith, endsWith, like имеет необязательный третий аргумент для управления чувствительностью к регистру: Case.INSENSITIVE и Case.SENSITIVE.По умолчанию используется регистр Case.SENSITIVE.

psList = realm.where(PS.class).contains("commandName",s, Case.INSENSITIVE).findAll();
0 голосов
/ 21 января 2019

Я только что нашел ... Я изменяю свой код на это, и он работает.

public class ActivityPS extends AppCompatActivity {
private PS_DA ps_da = new PS_DA(ActivityPS.this);
RecyclerView recyclerView;
android.widget.SearchView searchView;
Realm realm = Realm.getDefaultInstance();
AdapterPS adapterPS;
List<PS> filteredPs;
RealmResults<PS> psList;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ps);
    cast();
    setUpRecycler();
    searchviewSetUp();
}

public void searchviewSetUp(){
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {

    return false;
}

@Override
public boolean onQueryTextChange(String s) {

   psList = realm.where(PS.class).contains("commandName",s, Case.INSENSITIVE).findAll();
    adapterPS = new AdapterPS(ActivityPS.this,psList,realm);
    recyclerView.setLayoutManager(new LinearLayoutManager(ActivityPS.this));
    recyclerView.setAdapter(adapterPS);


    return false;
}

Это .Case.INSENSITIVE сделал это автоматически.

0 голосов
/ 21 января 2019

Сделайте все результаты в нижнем регистре, таким образом, что бы вы не чувствовали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...