Задержка автозаполнения

Я должен установить автозаполнение для моего приложения.

Я уже понял операцию AutoCompleteTextView, но я хотел бы динамически изменитьString[] используется для автодополнения Android.

Что я хочу сделать: вызвать страницу PHP, которая даст мнеString[] что я буду использовать в моем AutoCompleteTextView, но я хочу сделать это ТОЛЬКО, если клавиша была нажата, по крайней мере, через 500 миллисекунд после последней.

РЕДАКТИРОВАТЬ :

Хорошо, я был неправ. Я хочу, чтобы моя асинхронная работа выполнялась, если в течение 500 миллисекунд после последнего нажатия была нажата NO KEY (вы знаете, чтобы избежать перегрузки наших серверов, вызывая запрос для каждого введенного символа).

Вот как я думаю, я сделаю:

zipBox.setAdapter(myAdapter); //zipBox is an AutoCompleteTextView
zipBox.addTextChangedListener(new TextWatcher(){

    @Override
    public void onTextChanged(CharSequence s,
             int start, int before, int count){

        d = new Date();
        GetAutocompletion ac = new GetAutocompletion();
        ac.execute(zipBox.getText().toString());
    }
    // Other methods to implement
});


private class GetAutocompletion extends AsyncTask<String, String, String>{

    @Override
    protected String doInBackground(String... params){

        //adapter.notifyDataSetChanged();

        try{
             wait(500);
        } catch(InterruptedException e){}

        Date d1 = new Date();

        if(d1.getTime() - d.getTime() > 500){
            String res = "";

            try{

                URLConnection conn = new URL("myUrl.php?term=" + params[0]).openConnection();
                InputStream in = conn.getInputStream();
                Scanner s = new Scanner(in).useDelimiter("\\A");

                while (s.hasNext())
                    res += s.next();

                s.close();
                in.close();

            } catch(Exception e){ Log.d("eduine", "error during autocompletion receive"); }

            return json;
        } else return null;
    }

    @Override
    protected void onPostExecute(String result){

        super.onPostExecute(result);

        Log.d("eduine", "json result : " + result);
    }

}

Как вы думаете? Могу ли я использовать класс Timer?

Ответы на вопрос(4)

Ваш ответ на вопрос