具有服务器响应的AutoCompleteTextView

时间:2011-04-21 06:48:45

标签: android

如何创建将从远程服务器获取结果的AutoCompleteTextView?

据我所知,我需要实现ArrayAdapter,它必须向服务器发出异步请求。

2 个答案:

答案 0 :(得分:6)

AutoCompleteTextView我并不是出于这种行为的意思,我曾经像你一样思考过并且制作了很糟糕的代码......

如果您的自动完成列表来自基于您输入的每个字符的网络,最好创建一个包含EditText和listView的垂直线性布局,并创建一个连接池。

对于每个密钥类型检查是否在100-130毫秒内输入以确保用户可能等待响应并发出请求,在任何新请求中,删除或使您发送的最后一个请求无效。

安全到达一个响应,更新列表适配器。

对我来说很顺利。

AutoCompleteTextview使用预先制作的列表。它使用AsyncTask本身,所以我很难自己使用它来更新它使用的列表...

答案 1 :(得分:3)

1)您必须首先为asyncTask创建一个类,并且必须在其doInBackground()方法中建立与远程服务器的连接

2)你必须从remoteServer的响应中创建arrayAdapter,这也是你必须在doInBackground()方法中做的

3)成功后你必须将适配器设置为AutoCompleteTextView

new AsyncTask<Integer, Void, arrayList> () {
    ProgressDialog progressDialog;

    @Override
    protected void onPreExecute() {
        progressDialog = ProgressDialog.show(context, "downloading...", "Please wait...");
        super.onPreExecute();
    }

    @Override
    protected void onPostExecute(arrayList result) {
        //make arrayAdapter from result
        //set adapter to AutoCompleteTextView
        progressDialog.dismiss();
        super.onPostExecute(result);
    }

    @Override
    protected arrayList doInBackground(Integer... params) {
        // make connection to remote server
        //retrive response from remote server
        // make arrayList from response

        return arrayList
    }
}.execute(1);