: 입력 "VIG"및 AutoCompleteTextView에 목록을 그에 대한 5 개 최상의 결과를 보여줍니다 "4560 Vig", "Juan Pablo Perez ..", "Vig 4041 ...", "Vig" 또 다른 예를 들어, "vigo"를 입력하십시오 : "Vigo, Pontevedra"라고 적혀 있습니다. 그것을 AutoCompleteTextView에 저장하십시오. 내가 가지고있는 지금은위치 제안 AutoCompleteTextView에를 사용하여 안드로이드 (지오 코더 및 getFromLocationName 사용은()) 내가 위치를 검색하려는 AutoCompleteTextView에, 예를 들어이
거의 잘 작동하지만 난 하나의 오류가 있습니다
- 표시 목록은 표시되지 않습니다없는 경우, 문자에 삭제할 때 보여주는, 그리고 무엇을 보여줍니다 것은입니다 마지막 문자열 결과, 예 : "vigo"를 입력했는데 아무 것도 나타나지 않고 "o"를 삭제하고 표시 목록에 "vig"대신 "vigo"의 결과가 표시됩니다. 즉, AutoCompleteTextView에 입력 된 내용입니다. 순간.
가 나는 AsyncTask를의 위치에 대한 검색을 수행
여기private class SearchAddress extends AsyncTask<String, Void, String[]> {
@Override
protected String[] doInBackground(String... params) {
//adapter.clear();
String[] addressArray = getStreetList(query);
return addressArray;
}
@Override
protected void onPostExecute(String[] addressArray) {
if(addressArray == null)
Toast.makeText(NewRouteActivity.this, "No address obtained from server", Toast.LENGTH_SHORT).show();
else{
adapter.clear();
for(String address: addressArray){
adapter.add(address); <------HERE IS THE 2ND ERROR
Log.d("ASYNC", address);
}
}
}
@Override
protected void onPreExecute() {}
@Override
protected void onProgressUpdate(Void... values) {}
}
내 AutoCompleteTextView에 코드입니다 :
나는이와 희망String[] array = {};
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, array);//simple_dropdown_item_1line
autoFrom.setAdapter(adapter);
autoTo.setAdapter(adapter);
asyncSearch = new SearchAddress();
autoFrom.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (((AutoCompleteTextView) autoFrom).isPerformingCompletion()) {return;}
if (s.length() < 2) {
return;
}else{
query = s.toString();
if (asyncSearch.getStatus().equals(AsyncTask.Status.FINISHED)){
asyncSearch = new SearchAddress();
asyncSearch.execute(query);
Log.d("ASYNC", "FINISH GOOD");
Log.d("ASYNC", query);
}else{
Log.d("ASYNC", "CANCEL");
asyncSearch.cancel(false);
asyncSearch = new SearchAddress();
asyncSearch.execute(query);
}
return;
}
}
});
이 getStreetList 충분하다() 좋은 결과를주는 좋은 일을하고 있습니다. 다른 것이 필요한 경우 그냥 물어보십시오.
미리 감사드립니다.