安卓系统中能否进行Ajax调用?

9

我正在开发一个应用,其中有一个搜索选项。在搜索框中,如果我输入'a',我希望从Web服务器获取所有以a开头的朋友的姓名。但是为了实现这一点,我必须同时发送每个字母的请求。但是当我做了一些谷歌搜索后,我得到了不同的反应。有些人说Android中不可能进行Ajax调用。基本上,Android是基于Java的。那么为什么不能执行AJAX调用呢?是否有人能够引导我到一个关于在Android中进行AJAX调用的好链接?

4个回答

4
你可以使用我的droidQuery库,它是jQuery的Android移植版,包括大部分的特性和语法,包括Ajax。例如:
$.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();
    }
}));


1

我知道的最接近的方法是使用AutoCompleteTextView。您需要为其制作一个自定义适配器,每当用户键入任何内容时,它会调用Web服务器并返回基于过滤结果的筛选结果。

这里有一个例子


频繁地向服务器发送请求并不是一个好主意,因为这样会消耗大量时间。最好的方法是在适配器中初始化时加载所有数据,并在后续使用中利用它们。 - Raghu Nagaraju
是的,没错。我的建议是当无法一次性加载所有数据时,这对我来说就是这种情况。 - mattboy
如果我有数千条数据需要在“加载更多”列表视图中列出,该怎么办? - George Thomas

1

在屏幕加载时,使用异步任务从服务器获取名称。然后,您可以利用AutoCompleteTextView或MultiAutoCompleteTextView来实现您的需求。

您可以在适配器中指定已经获取的名称。更多信息请参见AutoCompleteTextViewMultiAutoCompleteTextView


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接