2017-01-31 3 views
0

Ich konnte den ersten und letzten Text der Benutzereingabe für AutoCompleteTextview, aber Meine App friert ein, wenn ich die Builder-Methode auf AutoCompleteTextView textChanged-Methode festlegen. Ich schätze jeden Aufwand.App friert bei Autovervollständigung ein textChanged

@Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

      if(s.length()>0) { 
       String selectedText = s.toString(); 
       int end = selectedText.length()+start; 
       SpannableStringBuilder builder = new SpannableStringBuilder(selectedText); 
       builder.setSpan(android.graphics.Typeface.BOLD, start, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE); 
       Log.i("builderText", " "+builder); 
       autoCompleteTextView.setText(builder); 

      } 

     } 
+0

Veröffentlichen Sie Ihre Stack-Trace. – Amila

+0

Es bedeutet, dass weder 'start' noch 'end' ae in Ihrer Zeichenfolge übereinstimmen. Was mich nicht überrascht, da Sie versuchen, zwei ** ganze Zahlen ** in einer Zeichenfolge zusammenzufassen. Außerdem ist die Zeichenfolge möglicherweise leer. –

+0

@Rotwang können Sie mir eine Idee geben, wie man das macht? – jonathan

Antwort

0

Das Problem ist, dass Sie versuchen, den Index eines Zeichens auf eine mögliche leere Zeichenfolge zu erhalten. Deshalb sollten Sie bekommen -1 hier

String startText = autoCompleteTextView.getText().toString(); 
int start = startText.indexOf(0); 
int end = startText.indexOf(1); 

Sie könnten diese Aussage in einem Zuhörer hinzufügen möchten z.B. autoCompleteTextView.addTextChangedListener() und behandeln Sie es dort, wo die tatsächlichen Textänderungen auftreten.

+0

Wie benutze ich den Textchangelistener hier – jonathan

+0

es funktioniert nicht für mich – jonathan