Sie brauchen einfach einen Mechanismus, der Änderungen in Ihrem Eingabefeld "beobachtet", und der korrekteste Weg, dies zu erreichen, ist der erwähnte TextWatcher
Implementieren Sie es also in einer Methode, die TextWatcher
bereitstellt zum Beispiel onTextChanged()
, Daten aus Inputbox zuweisen und als Parameter an AsyncTask senden und in onPostExecute() Methode neuen Adapter für Ihre AutoCompleteTextView
erstellen mit Daten, die von MySQL
abgerufen werden und weisen Sie Adapter Ihrem Widget zu und Sie haben es.
Pseudocode:
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() > 1) {
insertString = s.toString();
new YourTask().execute(insertString);
}
}
und führen Sie in Ihrer AsyncTask etwa Folgendes aus:
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);
}
}
Hinweis: In Ihrem Fall ist es einfacher, Ihre AsyncTask
zu erstellen innere Klasse Ihrer Activity
Klasse und Sie haben direkten Zugriff auf UI
Komponenten, ohne sie über den Konstruktor zu übergeben.