Du behöver helt enkelt någon mekanism som kommer att "bevaka" ändringar i din inmatningslåda och det mest korrekta sättet att uppnå det nämns TextWatcher
Så implementera det och i någon metod som tillhandahåller TextWatcher
till exempel onTextChanged()
, tilldela data från inmatningsrutan och skicka dem som parameter till AsyncTask och i onPostExecute() metod skapa ny adapter för din AutoCompleteTextView
med data hämtade från MySQL
och tilldela Adapter till din widget och du fick det.
Pseudokod:
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() > 1) {
insertString = s.toString();
new YourTask().execute(insertString);
}
}
och i din AsyncTask, utför något så här:
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);
}
}
Obs! I ditt fall är det lättare att göra din AsyncTask
inre klass av din Activity
klass och du har direkt tillgång till UI
komponenter utan att skicka dem via konstruktorn.