Atraso no preenchimento automático
Preciso definir um preenchimento automático para o meu aplicativo.
Eu já entendi a operação AutoCompleteTextView, mas gostaria de modificar dinamicamente oString[]
usado pelo preenchimento automático do Android.
O que eu quero fazer: chamar uma página PHP que me dará umaString[]
que vou usar no meu AutoCompleteTextView, mas quero fazer isso SOMENTE se uma tecla for pressionada pelo menos 500 milissegundos após a última.
Ok, eu estava errado. Quero que meu assíncrono seja executado se NO KEY for pressionado nos 500 milissegundos após o último pressionamento (você sabe, evitando sobrecarregar nossos servidores chamando uma solicitação para cada caractere digitado.)
Aqui está como eu acho que vou fazer:
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);
}
}
O que você acha? Existe alguma maneira que eu poderia usar a classe Timer?