2010-11-16 20 views
0

J'ai créé une vue personnalisée en étendant AutoCompleteTextView (avec une fonction spécialisée appelée setCursorAdapter). Je fournis un SimpleCursorAdapter et ajoute un FilterQueryProvider. J'utilise ceci pour une liste de nombres où j'ai besoin de la capacité de rechercher n'importe où dans le nombre pour une allumette.Curseur personnalisé vers le texte avec AutoCompleteTextView

public void setCursorAdapter(final Uri uri, final String key) { 

     Cursor c = getContext().getContentResolver().query(uri, 
       new String[] { "_id", key }, null, null, key); 
     SimpleCursorAdapter adapter = new SimpleCursorAdapter(getContext(), 
       android.R.layout.simple_dropdown_item_1line, c, 
       new String[] { key }, new int[] { android.R.id.text1 }); 

     this.addTextChangedListener(new TextWatcher() { 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, 
        int count) { 
       ((SimpleCursorAdapter) getAdapter()).getFilterQueryProvider() 
         .runQuery(s); 

      } 

      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, 
        int after) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void afterTextChanged(Editable s) { 
       // TODO Auto-generated method stub 

      } 
     }); 

     adapter.setFilterQueryProvider(new FilterQueryProvider() { 

      @Override 
      public Cursor runQuery(CharSequence constraint) { 
       Cursor c = getContext().getContentResolver().query(uri, 
         new String[] { "_id", key }, 
         key + " LIKE '%" + constraint + "%'", null, key); 
       return c; 
      } 
     }); 
     setAdapter(adapter); 
    } 

Tout fonctionne parfaitement, jusqu'à ce que je sélectionne la valeur dans le menu déroulant. La valeur que je reçois dans la fenêtre EditText: android.content.ContentResolver $ CursorWrapperInner @ ...

Comment puis-je éviter cela et obtenir mon texte (numérique) affiché correctement.

Merci

Répondre

1

Résolu: SimpleCursorAdapter.converToString (curseur) - Je l'emportaient sur cette fonction pour extraire la valeur.

Merci