2013-05-21 4 views
3

: 입력 "VIG"및 AutoCompleteTextView에 목록을 그에 대한 5 개 최상의 결과를 보여줍니다 "4560 Vig", "Juan Pablo Perez ..", "Vig 4041 ...", "Vig" 또 다른 예를 들어, "vigo"를 입력하십시오 : "Vigo, Pontevedra"라고 적혀 있습니다. 그것을 AutoCompleteTextView에 저장하십시오. 내가 가지고있는 지금은위치 제안 AutoCompleteTextView에를 사용하여 안드로이드 (지오 코더 및 getFromLocationName 사용은()) 내가 위치를 검색하려는 AutoCompleteTextView에, 예를 들어이

거의 잘 작동하지만 난 하나의 오류가 있습니다

  1. 표시 목록은 표시되지 않습니다없는 경우, 문자에 삭제할 때 보여주는, 그리고 무엇을 보여줍니다 것은입니다 마지막 문자열 결과, 예 : "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 충분하다() 좋은 결과를주는 좋은 일을하고 있습니다. 다른 것이 필요한 경우 그냥 물어보십시오.

미리 감사드립니다.

답변