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.