2012-10-09 17 views
8

Sto sviluppando un'applicazione in cui ho un'opzione di ricerca. In quella casella di ricerca, se digito 'a' voglio che tutti i nomi di tutti i miei amici inizino con a, che otterrò dal server web. Ma per quello devo fare richiesta simultaneamente digitando ogni lettera. Ma quando ho cercato su Google, ho avuto reazioni contrastanti. Alcune persone hanno detto che la chiamata Ajax non è possibile in Android. Fondamentalmente Android è basato su java. Allora perché non è possibile eseguire chiamate AJAX. Qualcuno potrebbe guidarmi ad un buon collegamento relativo alla chiamata AJAX in Android se è possibile?È possibile effettuare una chiamata ajax in Android?

risposta

1

più vicino So sta utilizzando un AutoCompleteTextView. Dovrai creare un adattatore personalizzato che inviti al server web ogni volta che un utente digita qualcosa e restituisce i risultati del filtro in base a ciò.

Here's an example.

+0

Colpire frequentemente il server ogni volta che l'utente digita una lettera, non è una buona idea. Richiede molto tempo. Caricare tutti i dati in modo univoco e utilizzarlo successivamente nell'adattatore è buono. –

+0

Sì, vero. Il mio suggerimento è buono quando non è possibile caricare tutti i dati contemporaneamente come è stato per me. – mattboy

+0

cosa succede se ho migliaia di dati, che elencho in una listview loadmore –

1

Recupera i nomi dal server al caricamento dello schermo, utilizzando asynctask. Quindi puoi utilizzare AutoCompleteTextView o MultiAutoCompleteTextView per soddisfare le tue esigenze.

Specificare i nomi già recuperati nell'adattatore. Vedere anche sulla AutoCompleteTextView

e MultiAutoCompleteTextView

4

È possibile utilizzare droidQuery, che è La porta Android di jQuery, e include la maggior parte delle caratteristiche e della sintassi di jQuery , tra cui Ajax. Ad esempio:

$.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(); 
    } 
})); 
Problemi correlati