2012-10-09 88 views
8

我正在開發一個我有搜索選項的應用程序。在那個搜索框中,如果我輸入「a」,我想要所有我的朋友的所有名字都以a開頭,我將從web服務器獲得。但爲此,我必須在輸入每個字母的同時提出請求。但是當我搜索時,我得到了不同的反應。有些人表示Ajax調用在Android中不可行。基本上Android是基於java的。那爲什麼不能執行AJAX調用。任何人都可以指導我在Android中與AJAX調用相關的良好鏈接,如果可能的話?ajax可以在Android中完成嗎?

回答

1

最近我知道的是使用AutoCompleteTextView。您需要爲其創建一個自定義適配器,以便在用戶輸入任何內容並根據此返回過濾器結果時調用Web服務器。

Here's an example

+0

每當用戶輸入一個字母時,經常打到服務器不是一個好主意。這是非常耗時的。初始加載所有數據並稍後在適配器中使用它是很好的。 –

+0

是的,沒錯。我無法一次加載所有數據,我的建議很好,就像我一樣。 – mattboy

+0

如果我有成千上萬的數據,我列出了一個loadmore listview –

1

使用asynctask在加載屏幕時從服務器獲取名稱。 然後,您可以使用AutoCompleteTextView或MultiAutoCompleteTextView來實現您的需要。

您可以在適配器中指定已獲取的名稱。查看更多關於AutoCompleteTextView

MultiAutoCompleteTextView

4

您可以使用droidQuery,這是jQuery的的Android的端口,包括了大部分的功能和語法的jQuery的,包括阿賈克斯。例如:

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