Je hebt gewoon een mechanisme nodig dat veranderingen in je invoervak "kijkt" en de meest correcte manier om dit te bereiken wordt vermeld TextWatcher
Dus implementeer het en in een of andere methode die TextWatcher . biedt bijvoorbeeld onTextChanged()
, wijs gegevens toe uit de invoerbox en stuur ze als parameter naar AsyncTask en in onPostExecute() methode maak een nieuwe adapter voor uw AutoCompleteTextView met gegevens opgehaald uit MySQL en wijs Adapter toe aan je widget en je hebt hem.
Pseudo-code:
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() > 1) {
insertString = s.toString();
new YourTask().execute(insertString);
}
}
en voer in je AsyncTask zoiets als dit uit:
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);
}
}
Opmerking: In uw geval is het gemakkelijker om uw AsyncTask . te maken innerlijke klasse van je Activity klasse en je hebt directe toegang tot UI componenten zonder ze via de constructor door te geven.