Potrzebujesz po prostu jakiegoś mechanizmu, który będzie "obserwował" zmiany w polu wprowadzania, a najpoprawniejszym sposobem, jak to osiągnąć, jest wspomniany TextWatcher
Więc zaimplementuj go w jakiejś metodzie, która zapewnia TextWatcher
na przykład onTextChanged()
, przypisz dane z pola wprowadzania i wyślij je jako parametr do AsyncTask oraz w onPostExecute() metoda utwórz nowy adapter dla swojego AutoCompleteTextView
z danymi pobranymi z MySQL
i przypisz Adapter do swojego widżetu i masz go.
Pseudokod:
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() > 1) {
insertString = s.toString();
new YourTask().execute(insertString);
}
}
a w swoim AsyncTask wykonaj coś takiego:
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);
}
}
Uwaga: W twoim przypadku łatwiej jest wykonać AsyncTask
wewnętrzna klasa twojego Activity
klasy i masz bezpośredni dostęp do UI
komponenty bez przekazywania ich przez konstruktor.