Creé una función de búsqueda y todo funciona perfectamente, excepto que cuando la letra está en minúsculas no recupera ningún valor, pero cuando está en mayúsculas sí.

¿Cómo hago para que no distinga entre mayúsculas y minúsculas?

Mi oyente de cambio de texto de búsqueda:

searchShops.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

    }

    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

    }

    @Override
    public void afterTextChanged(Editable s) {
        if (!s.toString().isEmpty()) {
            searchInDB(s.toString());
        } else {
            searchInDB("");
        }
    }
});

Y mi función searchInDB:

private void searchInDB(final String s) {
    firebaseFirestore.collection("Shops").orderBy("name").startAt(s).endAt(s+"\uf8ff").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                QuerySnapshot querySnapshot = task.getResult();
                arrayList.clear();
                for(QueryDocumentSnapshot DocumentSnapshot : querySnapshot) {
                    final Shop shop = DocumentSnapshot.toObject(Shop.class);
                    arrayList.add(shop);
                }
                SearchAdapter searchAdapter = new SearchAdapter(getApplicationContext(),arrayList);
                recyclerView.setAdapter(searchAdapter);
                searchAdapter.notifyDataSetChanged();
            } else {
                Log.d("", "Error");
            }
        }
    });
}

¿Cómo puedo solucionar esto?

0
user14131743 26 ago. 2020 a las 02:11

1 respuesta

La mejor respuesta

Firestore no tiene búsquedas que distinguen entre mayúsculas y minúsculas. Solo coincidirá con cadenas exactas o, en su caso específico, prefijos de cadena exactos para los valores del campo "nombre".

Por lo general, lo que la gente hace para solucionar esto es agregar otro campo solo para realizar consultas. Puede agregar un nuevo campo llamado "nameSearch" y asegurarse de que:

  • nameSearch es siempre una versión en minúsculas de name.
  • nameSearch solo es consultado por el cliente con valores de cadena completamente en minúsculas.
0
Doug Stevenson 25 ago. 2020 a las 23:24