2012-10-09 125 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(); 
    } 
}));