Você simplesmente precisa de algum mecanismo que "observe" as alterações em sua caixa de entrada e a maneira mais correta de alcançá-lo é mencionada
TextWatcher
Então implemente-o e em algum método que forneça
TextWatcher
por exemplo onTextChanged()
, atribua dados da caixa de entrada e envie-os como parâmetro para AsyncTask e em onPostExecute() método crie um novo adaptador para seu AutoCompleteTextView
com dados recuperados de MySQL
e atribua Adapter ao seu widget e você conseguiu. Pseudocódigo:
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() > 1) {
insertString = s.toString();
new YourTask().execute(insertString);
}
}
e no seu AsyncTask, execute algo assim:
protected List<String> doInBackground() {
// fetchning data from MySQL
return list;
}
public void onPostExecute(List<String> result) {
if (!result.isEmpty()) {
SomeAdapter adp = new SomeAdapter(context, layout, result);
actv.setAdapter(adp);
}
}
Observação: No seu caso é mais fácil fazer sua
AsyncTask
classe interna de sua Activity
class e você tem acesso direto à UI
componentes sem passá-los via construtor.