Cuando se ingresa un texto de consulta de Búsqueda, filtro los elementos de mi tarjeta en RecyclerView y los visualizo en la parte superior. Sin embargo, cuando se borra todo el texto, por alguna razón, la lista no vuelve al estado original. ¿Cómo actualizar mi lista RecyclerView? El siguiente código debería darle una mejor idea.

@Override
    public boolean onQueryTextChange(String newText) {
        final List<Number> filteredModelList = filter(numbers, newText);
        Log.v("App", newText + ", " + numbers.size() + ", " + filteredModelList.size());
        adapter.animateTo(filteredModelList);
        list.scrollToPosition(0);
        adapter.notifyDataSetChanged();
        if (newText.equalsIgnoreCase("")){
            try{
                Log.e("SEARCH VIEW", "I CAN ENTER HERE"); //But the list doesn't refresh
                adapter.animateTo(numbers);
                adapter.notifyDataSetChanged();
                list.setAdapter(adapter);
                list.scrollToPosition
            } catch(Exception e){
                Log.e("Caught Exception", e.toString());
            }

        }
        return true;
    }

Esto es problemático cuando ningún elemento coincide con la búsqueda, entonces la pantalla está en blanco sin tarjetas y el botón "X" en SearchView tampoco está visible. Cuando la X está visible y la toco, la lista vuelve a su estado original. Como segunda pregunta, ¿hay alguna manera de mostrar siempre el ícono de cierre ("X")?

0
Zac 25 dic. 2016 a las 10:32

3 respuestas

La mejor respuesta

Recuerde que tiene un método que carga datos en su RecyclerView, así que lo que hace es volver a llamar a ese método en la instrucción IF, como: cuando la longitud newText es igual a {{ X1}}, haz algo ......

A continuación se muestra el algoritmo:.

if (newText.length() == 0){    
    //Reload the data Again , use the existing  method you have of loading data in the RecyclerView .
}

Si tiene algunos problemas, simplemente vuelva a publicar sus datos de carga de código en RecyclerView y se los volveré a mostrar.

0
Lutaaya Huzaifah Idris 1 may. 2017 a las 09:44

Cuando aplica el filtro en la matriz, solo el registro de búsqueda está disponible en la matriz y luego borra un texto de búsqueda de que la matriz de tiempo no tiene valor ...

Por lo tanto, crea una matriz temporal y almacena la matriz original y aplica el filtro en la matriz temporal y la agrega a la matriz principal y la configura en vista de lista cuando elimina todo el texto de búsqueda, agrega la matriz temporal en la matriz principal y la configura al adaptador.

Nota: - siempre aplique el filtro en la matriz de tampones y agregue el resultado en la matriz principal y configure el adaptador

Espero que esto te ayude....

0
Maulik Santoki 25 dic. 2016 a las 08:02
@Override
public boolean onQueryTextChange(String newText) {
    if(TextUtils.isEmpty(newText)){  //Show all data 
      adapter.animateTo(numbers);
      adapter.notifyDataSetChanged();
      return ;
    }
     //Do Filter
}
0
Saurabh Padwekar 25 dic. 2016 a las 12:40