2012-05-01 2 views
0

:자동 완성 - 안드로이드 내 응용 프로그램에서이 같은 벡터가했습니다

Vector<Firm> firmVector= new Vector<Firm>(); 

당신이 볼 수 있듯이,이에 Firm

그래서 내 자신의 클래스에서 객체의 벡터를 내 질문에이 벡터에 AutoComplete을 추가 할 수 있습니까? developer.android.com에서이 같은

는 :

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    AutoCompleteTextView textView = (AutoCompleteTextView)findViewById(R.id.autocomplete_country); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES); 
    textView.setAdapter(adapter); 
} 
+0

네, 맞춤 어댑터를 만드는 방법에 대한 자습서를 검색 할 수 있습니다. – Sam

+0

나는 이미 사용자 정의 어댑터를 가지고 있지만, 좋은 Google 튜토리얼에서는 내 Google 검색 결과가 없습니다. –

답변

1

예, ArrayAdapter와를 구현하여 그것을 할 수 있지만 AutoCompleteTextView 사용하는 getFilter()를 구현해야합니다. ,

private class FirmAdapter extends ArrayAdapter<Firm> { 
private Filter filter; 
     @Override 
     public Filter getFilter() 
     { 
      if(filter == null){ 
       filter = new Filter(){ 
        int lastlen = 0; 
        boolean initialized = false; 

        @SuppressWarnings("unchecked") 
        @Override 
        protected void publishResults(CharSequence constraint, FilterResults results) 
        { 
         filteredItems = (List<Firm>)results.values; 
         ArrayAdapter.this.notifyDataSetChanged(); 
        } 

        @Override 
        protected FilterResults performFiltering(CharSequence constraint) 
        { 
         FilterResults results = new FilterResults(); 
         if(constraint == null || constraint.length() == 0){ 
          results.values = null; 
         }else{ 
          String val; 
          Firm obj; 
          constraint = constraint.toString().toUpperCase(); 
          int newlen = constraint.length(); 
          LinkedList<Firm> filteredResults = new LinkedList<Firm>(); 
          if(newlen < lastlen){ 
           int i = 0, size = ArrayAdapter.super.getCount(); 
           for(i=0;i<size;i++){ 
            obj = ArrayAdapter.super.getItem(i); 
            val = obj.toString(); // CUSTOMIZE THIS 
            if(val.contains(constraint)) filteredResults.add(obj); 
           } 
          }else{ 
           int i = 0, size = getCount(); 
           for(i=0;i<size;i++){ 
            obj = getItem(i); 
            val = obj.toString(); // CUSTOMIZE THIS 
            if(val.contains(constraint)) filteredResults.add(obj); 
           } 
          } 
          lastlen = newlen; 
          results.values = filteredResults; 
         } 
         return results; 
        } 
       }; 
      } 
      return filter; 
     } 
    } 
} 

은 내가이 프로젝트에서이 찢어진, 그래서 내 경우에는 내가 JSONObject 인스턴스의 집합에 필터가 (작업하려면 몇 가지 테스트와 정리가 필요합니다 : 이와 비슷한 무언가가 작동하지 않을 수 있습니다 어디로 Firm)하지만 그런 시도해보십시오. CUSTOMIZE THIS의 설명은 AutoCompleteTextView에 대한 입력을 기반으로 실제로 테스트를 수행하려는 위치입니다.

관련 문제