Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Retrasar la llamada a onQueryTextChange () en SearchView.OnQueryTextListener con SearchView

Uso de un SearchView en mi aplicación.

¿Hay de todos modos en el que puedo hacer la llamada a onQueryTextChange () método retrasado. Al igual que, cuando el usuario escribe una secuencia de caracteres, debe esperar antes de que este método se llama.

  • Invoca selector de fechas nativo de la aplicación web en iOS / Android
  • JNI manteniendo una referencia global a un objeto, accediendo a ella con otros métodos JNI. Mantener un objeto C ++ activo en varias llamadas JNI
  • Android 3.0 - Cómo recuperar todos los contactos a través de ContactsContract
  • Animate listView childs sólo una vez que aparecen
  • Actualización de GUI: Runnables vs Messages
  • Oauth 2.0: identificación del cliente y secreto del cliente expuestos, ¿es un problema de seguridad?
  • Esta espera no debe depender del número de caracteres escritos todavía, pero se requiere una pequeña pausa antes de que el método sea golpeado.

    Quiero hacer una pausa porque, a medida que el usuario escribe en la vista de búsqueda, una solicitud con la cadena se realizará en el servidor para solicitar los datos coincidentes y, a continuación, rellenaré mi ListView según sugerencias.

    Información de la actividad (si es necesario):
    Implementa SearchView.OnQueryTextListener .

      MenuItem searchItem = menu.findItem(R.id.action_search); SearchView searchView = (SearchView)MenuItemCompat.getActionView(searchItem); searchView.setOnQueryTextListener(this); 

  • ¿Se refiere a una cadena de otra cadena en strings.xml?
  • Android Studio y Gradle, argumento 0 para el parámetro @NotNull
  • Renderización de Android OpenGLES con C ++ y Java
  • Estilo personalizado para Android TabWidget
  • Android: ¿Puedes enviar / recibir datos a lo largo de una llamada telefónica?
  • Desactivar LogCat Salida COMPLETAMENTE en la versión de Android app?
  • 3 Solutions collect form web for “Retrasar la llamada a onQueryTextChange () en SearchView.OnQueryTextListener con SearchView”

    Para retrasar la llamada a su servidor, utilice el siguiente código en su método onQueryTextChange, las variables mQueryString y mHandler deben ser variables de clase.

     @Override public boolean onQueryTextChange(String searchTerm) { mQueryString = searchTerm; mHandler.removeCallbacksAndMessages(null); mHandler.postDelayed(new Runnable() { @Override public void run() { //Put your call to the server here (with mQueryString) } }, 300); return true; } 

    Retrasar la llamada a onQueryTextChange () en SearchView.OnQueryTextListener con SearchView

     private long delay = 2000; private long editTextLastWord = 0; privaste SearchView searchView; Handler handler = new Handler(); private Runnable runnable = new Runnable() { public void run() { if (System.currentTimeMillis() > (editTextLastWord + delay - 500)) { perFormTask(); } } }; searchView=(SearchView) findViewById(R.id.searchView); searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { return false; if (s.length() > 2) { editTextLastWord = System.currentTimeMillis(); handler.postDelayed(runnable, delay); } else { } } @Override public boolean onQueryTextChange(String newText) { return false; handler.removeCallbacks(runnable); } }); 

    Esto debería ayudarle, su clase necesita implementar "SearchView.OnQueryTextListener" y "cntr" debe ser declarado en su clase

    Esto ya es twinked para un usuario normal de escribir, si desea esperar más, sólo aumentar el "waitingTime".

    La solicitud debe estar dentro de la "onFinish"

      private int waitingTime = 200; private CountDownTimer cntr; @Override public boolean onQueryTextChange(String newText) { if(cntr != null){ cntr.cancel(); } cntr = new CountDownTimer(waitingTime, 500) { public void onTick(long millisUntilFinished) { Log.d("TIME","seconds remaining: " + millisUntilFinished / 1000); } public void onFinish() { Log.d("FINISHED","DONE"); } }; cntr.start(); return false; } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.