2012-10-09 9 views
8

Zajmuję się tworzeniem aplikacji, w której mam opcję wyszukiwania. W tym polu wyszukiwania, jeśli wpisuję "a", chcę, aby wszystkie nazwiska wszystkich moich znajomych zaczynały się od a, które otrzymam z serwera. Ale do tego muszę wysłać prośbę jednocześnie z wpisaniem każdej litery. Ale kiedy googlowałem, miałem mieszane reakcje. Niektórzy mówią, że połączenie Ajax nie jest możliwe w systemie Android. Zasadniczo Android opiera się na Javie. Dlaczego więc nie można wykonywać wywołań AJAX? Czy ktokolwiek mógłby poprowadzić mnie do dobrego linku związanego z połączeniem AJAX w systemie Android, jeśli jest to możliwe?Czy wywołanie ajax można zrobić w systemie Android?

Odpowiedz

1

Sąsiednie wiem używa AutoCompleteTextView. Będziesz musiał utworzyć niestandardową kartę, która będzie nawiązywała połączenia z serwerem sieciowym, gdy tylko użytkownik coś napisze i zwróci wyniki filtrowania na podstawie tego.

Here's an example.

+0

Uderzanie serwera często, gdy użytkownik pisze list, nie jest dobrym pomysłem. Jest to czasochłonne. Ładowanie wszystkich danych initailly i korzystanie z nich później w adapterze jest dobre. –

+0

Tak, prawda. Moja sugestia jest dobra, gdy nie można załadować wszystkich danych naraz, tak jak to było w przypadku mnie. – mattboy

+0

co, jeśli mam tysiące danych, które wyświetlam w ładniejszym liście list –

1

Pobierz nazwy z serwera podczas ładowania ekranu, używając asynctask. Następnie możesz skorzystać z AutoCompleteTextView lub MultiAutoCompleteTextView, aby osiągnąć swoje potrzeby.

Użytkownik określa już pobrane nazwy w adapterze. Zobacz więcej na AutoCompleteTextView

i MultiAutoCompleteTextView

4

Można użyć droidQuery, który jest Android port jQuery i obejmuje większość cech i składnia jQuery, w tym Ajax. Na przykład:

$.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(); 
    } 
})); 
Powiązane problemy