2012-10-09 39 views
8

Estoy desarrollando una aplicación en la que tengo la opción de búsqueda. En ese cuadro de búsqueda, si escribo 'a', quiero que todos los nombres de todos mis amigos empiecen con a, lo cual obtendré del servidor web. Pero para eso tengo que hacer una solicitud simultáneamente con escribir cada letra. Pero cuando busqué en Google, obtuve reacciones mixtas. Algunas personas dijeron que la llamada Ajax no es posible en Android. Básicamente, Android está basado en Java. Entonces, ¿por qué no es posible realizar llamadas AJAX? ¿Podría alguien guiarme a un buen enlace relacionado con la llamada AJAX en Android si es posible?¿Se puede hacer la llamada ajax en Android?

Respuesta

1

cercano que conozco está utilizando un AutoCompleteTextView. Tendrá que hacer un adaptador personalizado para que realice llamadas al servidor web siempre que un usuario escriba algo y devuelva resultados de filtro basados ​​en eso.

Here's an example.

+0

Golpear el servidor con frecuencia cuando el usuario escriba una letra, no es una buena idea. Es lento. Cargando todos los datos initaily y hacer uso de él más tarde en el adaptador es bueno. –

+0

Sí, cierto. Mi sugerencia es buena cuando no es posible cargar todos los datos a la vez, como ha sido el caso para mí. – mattboy

+0

¿Qué pasa si tengo miles de datos, que menciono en una lista de carga? –

1

Recupere los nombres del servidor al cargar la pantalla, usando asynctask. Luego puede utilizar AutoCompleteTextView o MultiAutoCompleteTextView para lograr su necesidad.

Especifique los nombres ya recuperados en el adaptador. Ver más en AutoCompleteTextView

y MultiAutoCompleteTextView

4

Usted puede utilizar droidQuery, que es El puerto Android de jQuery, e incluye la mayoría de las características y la sintaxis de jQuery , incluyendo Ajax. Por ejemplo:

$.ajax(new AjaxOptions().url("http://www.example.com").type("GET").dataType("json").success(new Function() { 
    @Override 
    public void invoke($ d, Object... args) { 
     JSONObject json = (JSONObject) args[0]; 
     //TODO handle json. If expecting a JSONArray, just cast args[0] to JSONArray. 
    } 
}).error(new Function() { 
    @Override 
    public void invoke($ d, Object... args) { 
     AjaxError error = (AjaxError) args[0]; 
     Toast.makeText(MyActivity.this, "Error (" + error.status + "): " + error.reason, Toast.LENGTH_LONG).show(); 
    } 
})); 
Cuestiones relacionadas