在TextWatcher中,我执行AsyncTask。
除了每次更改适配器时都会关闭并显示下拉菜单之外,一切正常。
如何在数据更改时保持下拉菜单处于打开状态?
searchText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
if (s.length() > 0) {
searchPlacesTask.cancel(true);
searchPlacesTask = new SearchPlacesTask();
searchPlacesTask.execute(s.toString().replace(" ", "-"));
} else {
searchPlacesTask.cancel(true);
searchPlacesTask = new SearchPlacesTask();
searchPlacesTask.execute();
}
}
});
private class SearchPlacesTask extends AsyncTask<String, Void, PlacesAPIResult> {
@Override
protected PlacesAPIResult doInBackground(String... params) {
PlacesAPIResult result = new PlacesAPIResult();
if (params.length > 0) {
places = PlacesAPIRestMethod.placeAutocomplete(params[0], currentLocation.getLatitude(), currentLocation.getLongitude(),
500, null, result);
} else {
places = PlacesAPIRestMethod.placeSearch(currentLocation.getLatitude(), currentLocation.getLongitude(), 0, true, result);
}
return result;
}
@Override
protected void onPostExecute(PlacesAPIResult result) {
if (result.getResult() == PlacesAPIResult.OK) {
adapter = new PlaceAdapter(ChooseLocationActivity.this, R.layout.locationrow, places);
searchText.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
}
}