2010-10-13 14 views
0

J'ai un AutoCompleteTextView avec un MatrixCursor en tant qu'adaptateur. Le AutoCompleteTextView a OnItemClickListener comme suit:getText() sur AutoCompleteTextView renvoie SpannableStringBuilder?

public class AutoCompleteListClickListner implements OnItemClickListener 
{ 
    private AutoCompleteTextView acView; 

    public AutoCompleteListClickListner(AutoCompleteTextView view) 
    { 
     this.acView = view; 
    } 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
    { 
     /* tv is the selected view in the dropdown */ 
     TextView tv = (TextView) ((LinearLayout) view).getChildAt(0); 
     Log.d(AndroidLogTag, "Before:>>>>" + this.acView.getText().toString()); 
     this.acView.setText(tv.getText().toString()); 
     Log.d(AndroidLogTag, "After:>>>>" + this.acView.getText().toString()); 
    } 
} 

Lorsqu'un élément est sélectionné, je vois suivant dans le journal

10-14 00:34:37.893: DEBUG/MyApp(19151): Before:>>>>[email protected] 
10-14 00:34:37.912: DEBUG/MyApp(19151): After:>>>>Ankit V Jain 

Si vous voyez le journal, l'entrée Before journal, le getText() retourne un objet SpannableStringBuilder et toString() retourne un identifiant d'objet.

Comment puis-je obtenir le texte de la vue de remplissage automatique qui était là juste avant de cliquer sur l'élément déroulant?

Répondre

0

Eh bien, il y a toujours une autre façon (sale ou mieux) dans le code.

J'ai ajouté un TextWatcher à l'AutoCompleteView et utilisé l'événement beforeTextChanged() pour enregistrer le contenu du texte et le réutiliser dans onItemClick()!

0

essayer casting SpannableStringBuilder-CharSequence